0

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

我也想继续验证工作。

4

1 回答 1

1

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

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

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

这样,我的字段名称就变成了 :General80wm4kxsss[useField]并且是唯一的。

于 2012-10-14T15:01:39.103 回答