php - 在 Symfony2 中使用 buildForm->add() 函数时,可接受的选项有哪些?

标签 php symfony

我已经查看了文档,除非我错过了它,否则我无法找到任何解释 Symfony2 中 buildForm->add() 函数的官方 $options 的内容。

public function buildForm(FormBuilder $builder, array $options)
{

    $builder->add('fieldname1');        
    $builder->add('fieldname2', new formObjectType(), $arrayOptions);

}

采用上面的代码,哪些选项将作为第二个字段的数组传入。

谢谢

最佳答案

这些选项被传递给字段类型,在您的例子中是 formObjectType。因此,这实际上取决于该字段接受的选项。例如,假设您想传递一个选项来告诉 formObjectType 显示或不显示给定的字段。你可以这样做:

// Application/AcmeBundle/Form/Type/FormObjectType.php
class FormObjectType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $this->add('name', 'text');
        if ($options['display_custom_field'] === true) {
            $this->add('name_custom', 'text');
        }

    }

    public function getDefaultOptions(array $options)
    {
        return array(
            'display_custom_field' => false,
        );
    }
}

// Application/AcmeBundle/Controller/FormController.php
class FormController extends Controller 
{
    public function createForm($object)
    {
        return $this->getFormFactory()->create(new FormObjectType(), $object, array(
            'display_custom_field' => true,
        ));
    }

    public function customAction() 
    {
        $form = $this->createForm();

        // Code here ...
    }
}

如果选项是在数组中传递或根本不传递数组,则在 formObjectType 中设置默认值。因此,此数组用于自定义给定类型所期望的选项。这也适用于 textdate 等内置类型。

希望对您有所帮助。

问候,
马特

附言您的类名应该以大写字母开头:FormObjectType 而不是 formObjectType 以区分变量和方法与类名。这只是一个建议:)

关于php - 在 Symfony2 中使用 buildForm->add() 函数时,可接受的选项有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7504792/

相关文章:

php - 切换到学说 : how to realize such query?

java - 在网站的 PHP 上执行 *.java 或 *.jar

php - 如何访问在另一个 PHP 类中启动的数据库连接?

php - Symfony - 如何使用查询构建器将数组用作参数?

php - 根据 WooCommerce 中的工作日,按订单自动向客户发送电子邮件

javascript - 在ajax中发送json

symfony - gulp (和symfony): working with assets

symfony - 在实体类中访问 Symfony2 全局参数

php - Symfony2 : Custom configuration root

debugging - 如何禁用 Symfony 2 分析器栏?