我正在寻找一种在Rails应用程序中应用一些外部CSS框架的通用方法.这些框架通常定义一组应该用于某些HTML元素的类名.
考虑jQuery UI.要获得一致的表单样式,您可能会这样:
# in a view
<% form_for @foo do |f| %>
...
<%= f.text_field :bar, :class => ['ui-widget', 'ui-widget-content', 'ui-widget-container', 'ui-corner-all'] %>
or
<%= f.text_field :bar, :class => 'ui-widget ui-widget-content ui-widget-container ui-corner-all' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
对每个输入字段执行此操作根本不是DRY.
甚至像帮助方法一样
# in application_helper.rb
def jquery_ui_classes
'ui-widget ui-widget-content ui-widget-container ui-corner-all'
end
# in a view
<%= f.text_field :bar, :class => jquery_ui_classes %>
Run Code Online (Sandbox Code Playgroud)
要么
# in application_helper.rb
def jquery_text_field(form_builder, method, opts = {})
ui = ['ui-widget', 'ui-widget-content', 'ui-widget-container', 'ui-corner-all']
klass = [opts.delete(:class), …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用我的实体symfony formbuilder来处理dropzone.js.
如果我使用简单,一切正常 <input type="file" id="form_file" name="form[file]">
但是,如果我使用dropzone.js,我在POST中得到了这个区别:

我该怎么办呢?
这是我的js:
Dropzone.options.myAwesomeDropzone = {
autoProcessQueue: false,
uploadMultiple: true,
parallelUploads: 25,
maxFiles: 25,
init: function() {
var myDropzone = this;
$("#submit-all").click(function (e) {
e.preventDefault();
e.stopPropagation();
myDropzone.processQueue();
}
);
}
}
Run Code Online (Sandbox Code Playgroud)
我的表单文件如下:
<form id="my-awesome-dropzone" class="wizard-big dropzone" action="{{ path('add') }}" method="post" {{ form_enctype(form) }}>
{{ form_widget(form.name, {'attr': { 'class': 'form-control' } }) }}
<div class="row">
<div class="dropzone-previews"></div>
<div class="fallback">
{{ form_widget(form.file, {'attr': { 'class': 'cotam' } }) }}
</div>
</div>
<button type="submit" id="submit-all" class="btn">Upload …Run Code Online (Sandbox Code Playgroud) 所以我有一个像这样的子组件
export class ChildComponent implements OnInit {
@Input('parentForm')
public parentForm: FormGroup;
constructor(private fb: FormBuilder, private cd: ChangeDetectorRef) { }
ngOnInit() {
this.parentForm.addControl('newControl', <Some Control>);
}
}
Run Code Online (Sandbox Code Playgroud)
接下来我有一个这样的准系统单元测试文件
describe('ChildComponent', () => {
let component: ChildComponent;
let fixture: ComponentFixture<ChildComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [ReactiveFormsModule, FormsModule],
declarations: [ ChildComponent ],
providers: [ FormBuilder, FormGroup ]
})
.compileComponents();
}));
beforeEach(inject([FormBuilder], (fb: FormBuilder) => {
fixture = TestBed.createComponent(ChildComponent);
component = fixture.componentInstance;
component.parentForm = fb.group({});
component.ngOnInit();
fixture.detectChanges();
}));
fit('should be created', () => {
expect(component).toBeTruthy(); …Run Code Online (Sandbox Code Playgroud) unit-testing formbuilder karma-jasmine angular-reactive-forms angular4-forms
我正在使用flutter_form_builder,我想构建一个动态表单,例如在小部件上回答“是”或“否”,然后在其正下方弹出另一个小部件。
\n例如:“病人吃了什么东西吗?” 是/否。如果是,则显示一个带有复选框“他们吃了什么?”的小部件。米饭、披萨等
\n问题是,当我更改利尿收音机时,FormBuilder 会发出警告:\nI/flutter (21285):警告!替换活动的重复字段 - 只要有意替换该字段,就可以忽略这一点\nI/flutter (21285):警告!替换重复字段以消除 - 只要有意替换该字段,就可以忽略这一点\nI/flutter (21285):警告!忽略字段注销以进行消除——只要该字段被有意替换,就可以忽略它
\n主要问题:那么,UI 上发生的情况是。假设我为“消除”卡选择“模拟”\n然后我更改了“利尿”卡上的选择,然后它抛出上面的错误,\n屏幕重建并且消除卡显示为未选择。
\n我的代码如下。(HMClickableCard 只是一个具有卡片并在其中实现 FormBuilderRadioGroup 的小部件)
\nContainer(\n child: HMClickableCard(\n options: ["Sim", "N\xc3\xa3o"],\n label: "Diurese",\n name: "diuresis",\n icon: Icons.bathroom,\n iconSize: 30,\n onChanged: (option) {\n _fbKey.currentState?.save();\n setState(() {\n switch (option) {\n case "Sim":\n _diuresis = true;\n break;\n case "N\xc3\xa3o":\n _diuresis = false;\n break;\n }\n });\n }),\n ),\n Container(\n child: FormBuilderCheckboxGroup(\n name: "diuresisAspect",\n options: [\n FormBuilderFieldOption(value: "Clara"),\n FormBuilderFieldOption(value: "Amarelo Ouro"),\n FormBuilderFieldOption(value: …Run Code Online (Sandbox Code Playgroud) 所以我有这个辅助方法,对吗?
def table_form_field(name_or_options = nil, *args, &block)
# ...
render :partial => "snippets/table_form_field", :locals => options
end
Run Code Online (Sandbox Code Playgroud)
这很好,但有时我想将它与表单生成器一起使用,为此我必须这样调用它:
table_form_field(:foo, :form_builder => f) do |name|
f.text_field name
end
Run Code Online (Sandbox Code Playgroud)
必须手动指定 :form_builder 很烦人。所以我的目标是扩展ActionView::Helpers::FormBuilder并添加一个新方法,如下所示:
class ActionView::Helpers::FormBuilder
def table_form_field(name_or_options, options, &block)
if name_or_options.is_a?(Hash)
name_or_options[:form_builder] = self
else
options[:form_builder] = self
end
# But... how can I call the helper?
# Hmm, I'll try this:
klass = Class.new do
include ApplicationHelper
end
klass.new.send(:table_form_field, name_or_options, options, &block)
# Thank you, Mario, but your princess is …Run Code Online (Sandbox Code Playgroud) $repository = $this->getDoctrine()->getRepository('ParabolaEntityBundle:ProjectAllocation');
$query = $repository->createQueryBuilder('p')
->where('p.startDate < :sdate and p.employee = :emp and p.endDate > :edate')
->setParameter('sdate', date('Y-m-d', time()))
->setParameter('edate', date('Y-m-d', time()))
->setParameter('emp', $employee->getId())
->getQuery();
$projectAllocate = $query->getResult();
Run Code Online (Sandbox Code Playgroud)
我如何在FormType类中使用上面的代码.我正在使用此查询为表单生成器中的选择类型生成数组.
我试图在表单中使用特定的验证器。
该表格供用户重新定义其密码,他还必须输入其当前密码。为此,我使用来自symfony的内置验证器
以我的形式:
use Symfony\Component\Security\Core\Validator\Constraints\UserPassword;
Run Code Online (Sandbox Code Playgroud)
表单类型如下所示:
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('currentpassword', 'password', array('label'=>'Current password',
'mapped' => false,
'constraints' => new UserPassword(array('message' => 'you wot m8?')),
'required' => true
))
->add('password', 'repeated', array(
'first_name' => 'new',
'second_name' => 'confirm',
'type' => 'password',
'required' => true
))
;
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以在控制器中获取数据表格,获取当前密码值,调用security.encoder_factory等,但是该验证程序很方便。
我的问题是表单总是返回错误(在这里:“ you wot m8?”),就像我输入了错误的当前密码一样。
知道我在做什么错吗?
我正在尝试生成表单类型,特别是"ProductLanguageType".
我想生成ProductLanguageType,与Language表中现有语言的当前数量一样多.
例如,如果我在语言表中有(英语,法语,俄语,中文),它将在同一页面上生成4个ProductLanguageType表单.
我想知道如何查询语言表并在同一页面上生成相同类型的多个表单,表单构建器是否能够执行此操作还是有另一种解决方法?一段时间以来一直遇到麻烦,很乐意为此找到一个好的解决方案.
ProductLanguageType:
class ProductLanguageType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options){
$builder->add('id_language', 'entity', array(
'class' => 'AdminBundle:Language',
'data_class' => 'Main\AdminBundle\Entity\Language',
'property' => 'language'
)
)
->add('name', 'text')
->add('description', 'ckeditor', array(
'config_name' => 'admin',
'config' => array(
'filebrowser_image_browse_url' => array(
'route' => 'elfinder',
'route_parameters' => array('instance' => 'default'),
),
)
))
->add('short_description', 'text');
}
public function getName(){
return 'productLanguage';
}
}
Run Code Online (Sandbox Code Playgroud)
ProductType(ProductLanguageType嵌入在这里):
class ProductType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options){
$builder->addEventListener(FormEvents::PRE_SET_DATA, array($this, 'onPreSetData')); …Run Code Online (Sandbox Code Playgroud) 在我的 Symfony 2 应用程序中,我使用FormBuilder来创建一个表单,用于选择生成的文档中包含的数据。
$typeChoices = [
'001' => 'first factor',
'002' => 'another factor',
'003' => 'some surcharge',
'004' => 'custom discount',
'005' => 'another surcharge'
];
$formDownload = $this->createFormBuilder(array())
->add('category', 'entity', array(
'class' => 'MyApp\CategoryBundle\Entity\Category',
'choice_label' => 'name'
))
->add('type', 'choice', array(
'choices' => $typeChoices,
'multiple' => true
))
->add('download', 'submit', array(
'attr' => array(
'class' => 'btn-primary'
),
))
->setAction($this->generateUrl('myapp_data_download'))
->getForm();
Run Code Online (Sandbox Code Playgroud)
该$typeChoices数据从加载EntityRepository-我只是简化了这个演示的代码。
这样,就会生成一个选择框,如下所示:
<select multiple="multiple" class="form-control" required="required" name="form[type][]" id="form_type">
<option value="001">first …Run Code Online (Sandbox Code Playgroud) 我有表单,我想在提交时验证日期字段,我正在使用表单生成器,我该怎么做(角度方式)?另一个问题为什么我看不到日期字段中的值published_date?我试图搜索,但找不到输入日期字段的解决方案。
unamePattern = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
ngOnInit() {
this.book =
{
id: 55,
author_name : "vv",
published_date : new Date('01/02/2018'),
title : "cc"
};
this.form = this.formBuilder.group({
title : ['', Validators.required],
author : ['', Validators.required],
datePublish: ['', Validators.pattern(this.unamePattern)],
}
);
}Run Code Online (Sandbox Code Playgroud)
<input
[(ngModel)]="book.published_date"
id="dateOfBirth"
class="form-control"
placeholder="yyyy-mm-dd"
name="dp"
ngbDatepicker
formControlName="datePublish"
#dp="ngbDatepicker">
<div class="input-group-append">
<button class="btn btn-outline-secondary" (click)="dp.toggle()" type="button">
<i class="fa fa-calendar" aria-hidden="true"></i>
</button>
</div>Run Code Online (Sandbox Code Playgroud)
formbuilder ×10
symfony ×5
php ×4
validation ×2
angular ×1
angular5 ×1
css ×1
flutter ×1
javascript ×1
passwords ×1
unit-testing ×1