标签: formbuilder

为Rails的表单构建器帮助器方法设置默认的CSS类

我正在寻找一种在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)

css formbuilder ruby-on-rails-3

6
推荐指数
1
解决办法
1074
查看次数

Dropzone.js和symfony formbuilder

我正在尝试使用我的实体symfony formbuilder来处理dropzone.js.

如果我使用简单,一切正常 <input type="file" id="form_file" name="form[file]">

但是,如果我使用dropzone.js,我在POST中得到了这个区别: 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)

javascript php formbuilder symfony

6
推荐指数
1
解决办法
4148
查看次数

在Jasmine中通过@input模拟父FormGroup

所以我有一个像这样的子组件

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

6
推荐指数
1
解决办法
4108
查看次数

替换重复字段以消除 - Flutter Form Builder 错误

我正在使用flutter_form_builder,我想构建一个动态表单,例如在小部件上回答“是”或“否”,然后在其正下方弹出另一个小部件。

\n

例如:“病人吃了什么东西吗?” 是/否。如果是,则显示一个带有复选框“他们吃了什么?”的小部件。米饭、披萨等

\n

问题是,当我更改利尿收音机时,FormBuilder 会发出警告:\nI/flutter (21285):警告!替换活动的重复字段 - 只要有意替换该字段,就可以忽略这一点\nI/flutter (21285):警告!替换重复字段以消除 - 只要有意替换该字段,就可以忽略这一点\nI/flutter (21285):警告!忽略字段注销以进行消除——只要该字段被有意替换,就可以忽略它

\n

主要问题:那么,UI 上发生的情况是。假设我为“消除”卡选择“模拟”\n然后我更改了“利尿”卡上的选择,然后它抛出上面的错误,\n屏幕重建并且消除卡显示为未选择。

\n

我的代码如下。(HMClickableCard 只是一个具有卡片并在其中实现 FormBuilderRadioGroup 的小部件)

\n
Container(\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)

formbuilder flutter

6
推荐指数
0
解决办法
1039
查看次数

向 FormBuilder 添加一个方法,该方法调用呈现部分的辅助方法

所以我有这个辅助方法,对吗?

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)

renderpartial ruby-on-rails formbuilder

5
推荐指数
1
解决办法
2232
查看次数

如何在symfony2中的表单类型类中获取doctrine存储库?

$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类中使用上面的代码.我正在使用此查询为表单生成器中的选择类型生成数组.

formbuilder symfony

5
推荐指数
1
解决办法
1万
查看次数

在表单类型中使用Symfony2 UserPassword验证程序

我试图在表单中使用特定的验证器。

该表格供用户重新定义其密码,他还必须输入其当前密码。为此,我使用来自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?”),就像我输入了错误的当前密码一样。

知道我在做什么错吗?

php passwords validation formbuilder symfony

5
推荐指数
1
解决办法
2428
查看次数

Symfony2多次在同一页面上生成相同的表单类型

我正在尝试生成表单类型,特别是"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)

php formbuilder symfony

5
推荐指数
2
解决办法
3092
查看次数

添加类以在 Symfony FormBuilder 中选择选项

在我的 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)

php formbuilder symfony

5
推荐指数
1
解决办法
3084
查看次数

使用表单生成器的 Angular 5 验证日期字段

我有表单,我想在提交时验证日期字段,我正在使用表单生成器,我该怎么做(角度方式)?另一个问题为什么我看不到日期字段中的值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)

validation formbuilder angular angular5 angular-validator

5
推荐指数
1
解决办法
1万
查看次数