Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我们可以从Symfony控制器的表单中定义小部件的id属性吗?_Php_Forms_Symfony - Fatal编程技术网

Php 我们可以从Symfony控制器的表单中定义小部件的id属性吗?

Php 我们可以从Symfony控制器的表单中定义小部件的id属性吗?,php,forms,symfony,Php,Forms,Symfony,我想使用 从细枝视图,向我们展示如何添加“foo”类属性: {{ form_widget(form.surname, {'attr': {'class': 'foo'}}) }} 这可以从form类中使用: $builder->add('姓氏',TextType::class[ 'attr'=>['class'=>'foo'], ]) 因此,如果我们可以像这样更改class属性,我们可以假设我们可以像下面这样更改id属性: {{ form_widget(form.title, { 'attr

我想使用

从细枝视图,向我们展示如何添加“foo”类属性:

{{ form_widget(form.surname, {'attr': {'class': 'foo'}}) }}
这可以从form类中使用:

$builder->add('姓氏',TextType::class[
'attr'=>['class'=>'foo'],
])
因此,如果我们可以像这样更改class属性,我们可以假设我们可以像下面这样更改id属性:

{{ form_widget(form.title, { 'attr': {'id': 'my_custom_id'} }) }}
{{ form_widget(form.surname, { 'id': 'my_custom_id' }) }}
public function buildView(FormView $view, FormInterface $form, array $options)
{

    $view->vars['id'] = 'myprefix';
}
但是这不起作用,我们需要在
attr
数组之外定义id,如下所示:

{{ form_widget(form.title, { 'attr': {'id': 'my_custom_id'} }) }}
{{ form_widget(form.surname, { 'id': 'my_custom_id' }) }}
public function buildView(FormView $view, FormInterface $form, array $options)
{

    $view->vars['id'] = 'myprefix';
}
基于这一观察,如果我尝试从表单类中定义
attr
之外的id,如下所示:

$builder->add('姓氏',TextType::class[
'id'=>'my\u custom\u id',
])
但这是不允许的,我得到以下信息:

{{ form_widget(form.title, { 'attr': {'id': 'my_custom_id'} }) }}
{{ form_widget(form.surname, { 'id': 'my_custom_id' }) }}
public function buildView(FormView $view, FormInterface $form, array $options)
{

    $view->vars['id'] = 'myprefix';
}
选项“id”不存在。定义的选项有:“操作”、“允许额外字段”、“属性”、“自动初始化”、“块名称”、“按引用”、“复合”、“约束”、“csrf字段名称”、“csrf消息”、“csrf保护”、“csrf令牌id”、“csrf令牌管理器”、“数据”、“数据类”、“禁用”、“空数据”、“错误冒泡”、“错误映射”、“额外字段消息”,“继承数据”、“无效消息”、“无效消息参数”、“标签”、“标签属性”、“标签格式”、“映射”、“方法”、“发布最大大小消息”、“属性路径”、“必需”、“翻译域”、“修剪”、“上载最大大小消息”、“验证组”

我注意到我们暂时不能在
attr
数组中定义id,我们可以在a的
label\u attr
数组中定义id,甚至可以从表单类中定义

是否可以从表单类定义小部件的id?如果可以,如何定义

编辑:我想说的是,我测试了以下内容,只更改了标签的id

->add('姓氏',TextType::class[
'label_attr'=>['id'=>'my_custom_id1'],
'attr'=>['id'=>'my_custom_id2'],
])
我正在使用symfonyv3.3.6


EDIT2:我创建了。

也许你可以用
数据id
代替:

$builder
    ->add('surname', TextType::class, array(
            'label' => 'Label:',
            'label_attr' => array(
                    'id' => 'custom_id1',
            ),
            'attr' => array(
                    'data-id' => 'custom_id2',
                    'class' => 'custom_id2',
            ),
    ))
;

我有一个,所以我想知道
数据id
是否适合您?

也许您可以使用
数据id

$builder
    ->add('surname', TextType::class, array(
            'label' => 'Label:',
            'label_attr' => array(
                    'id' => 'custom_id1',
            ),
            'attr' => array(
                    'data-id' => 'custom_id2',
                    'class' => 'custom_id2',
            ),
    ))
;

我有一个,所以我想知道
数据id
是否适合您?

事实上,作为Symfony,不可能

此外,这是一个很好的例子

我们只能通过覆盖
$view->vars['id']
来更改id的前缀,如下所示:

{{ form_widget(form.title, { 'attr': {'id': 'my_custom_id'} }) }}
{{ form_widget(form.surname, { 'id': 'my_custom_id' }) }}
public function buildView(FormView $view, FormInterface $form, array $options)
{

    $view->vars['id'] = 'myprefix';
}

后缀是在
$builder->add('names',TextType::class)
中定义的名称。在这种情况下,新id将是
myprefix\u-names

事实上,它不可能像Symfony那样

此外,这是一个很好的例子

我们只能通过覆盖
$view->vars['id']
来更改id的前缀,如下所示:

{{ form_widget(form.title, { 'attr': {'id': 'my_custom_id'} }) }}
{{ form_widget(form.surname, { 'id': 'my_custom_id' }) }}
public function buildView(FormView $view, FormInterface $form, array $options)
{

    $view->vars['id'] = 'myprefix';
}

后缀是在
$builder->add('姓氏',TextType::class)中定义的名称
。在这种情况下,新的id将是
myprefix\u姓氏

Downvoter:至少解释一下你为什么会被否决,因为这是一种常见的礼貌……我想更大的问题是为什么?你对Symfony自动生成的id有什么问题?我想自定义id属性,我注意到了这个问题,我想指出。如果没有办法,是的,我将使用Symfony自动生成的。您可以像发现的那样在Twig中这样做,也可以使用修改后的表单主题并覆盖所需的值。您还可以修改
getBlockPrefix()
在您的表单中,如果您愿意,甚至返回
,这可能会有所帮助。您好,看起来我错了。id没有按我认为的方式设置。您需要使用Twig,如下所示:
{form_widget(form.names,{'id':'my_custom_id'}}
你想让我删除我的答案吗?Downvoter:至少解释一下你为什么会被否决,因为这是这里的一种常见礼貌……我想更大的问题是为什么?你对Symfony自动生成的id有什么问题?我想自定义id属性,我注意到了这个问题,我想指出。如果没有办法,我会使用由Symfony自动生成的。您可以像发现的那样在Twig中执行,也可以使用修改后的表单主题并覆盖所需的值。您还可以修改
getBlockPrefix()
在您的表单中,如果您愿意,甚至返回
,这可能会有所帮助。您好,看起来我错了。id没有按我认为的方式设置。您需要使用Twig,如下所示:
{form\u widget(form.names,{'id':'my\u custom\u id'}}}
您想让我删除我的答案吗?