Symfony2中有没有办法在Type类上自定义字段名称?
我试过这样的事情:
<?php
// src/Fuz/TypesBundle/Form/Editor/GeneralType.php
namespace Fuz\TypesBundle\Form\Editor;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Fuz\TypesBundle\Entity\Editor\GeneralData;
class GeneralType extends AbstractType
{
/**
* Root node ID
*
* @access private
* @var rootId
*/
private $rootId;
/**
* Current node ID
*
* @access private
* @var rootId
*/
private $currentId;
/**
* Constructor
*
* @access public
* @param string $rootId
* @param string $currentId
*/
public function __construct($rootId, $currentId)
{
$this->rootId = $rootId;
$this->currentId = $currentId;
}
/**
* General form fields
*
* @access public
* @param FormBuilder $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('useField', 'text',
array (
'required' => false,
'label' => 'types.general.use_field',
'read_only' => ($this->rootId == $this->currentId),
'attr' => array(
'name' => "useField{$this->currentId}",
)
));
// ...
}
/**
* Form name
*
* @access public
* @return string
*/
public function getName()
{
return 'General';
}
}
但是我的字段仍然是General[useField]
名称(其中General是我的表单名称)。
我还希望继续验证。
答案 0 :(得分:1)
Okey我在发布问题之前找到了答案,但我认为这对其他人有用。
我的错误是我试图动态更改字段名称,但正确的方法是更改表单名称。
/**
* Form name
*
* @access public
* @return string
*/
public function getName()
{
return 'General' . $this->currentId;
}
通过这种方式,我的字段名称变为:General80wm4kxsss[useField]
并且是唯一的。