Symfony2上的自定义表单字段名称

时间:2012-10-14 15:01:39

标签: php forms symfony

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是我的表单名称)。

我还希望继续验证。

1 个答案:

答案 0 :(得分:1)

Okey我在发布问题之前找到了答案,但我认为这对其他人有用。

我的错误是我试图动态更改字段名称,但正确的方法是更改​​表单名称。

/**
 * Form name
 *
 * @access public
 * @return string
 */
public function getName()
{
    return 'General' . $this->currentId;
}

通过这种方式,我的字段名称变为:General80wm4kxsss[useField]并且是唯一的。