【问题标题】:symfony2 form field: entity with custom option namesymfony2 表单字段:具有自定义选项名称的实体
【发布时间】:2012-08-08 22:18:37
【问题描述】:

我使用实体作为表单字段类型,并为该下拉框获取我的选项列表,就像这样,就像一个魅力。

    $builder->add('parent', 'entity', array(
    'label' => 'Välj en fastighet för skärmen ',
    'class' => 'BizTVContainerManagementBundle:Container','property'=>'name',
    'query_builder' => function(EntityRepository $er) use ($parentType, $company) {
        return $er->createQueryBuilder('u')
            ->where('u.containerType = :type', 'u.company = :company')
            ->setParameters( array('type' => $parentType, 'company' => $company) )
            ->orderBy('u.name', 'ASC');
        },
    ));

现在,我如何将显示名称自定义为我一起编写的代码,而不仅仅是

'property'=>'name

我最终想要做的是拥有当前显示的字符串,再加上另一个字符串。我实际上也想在其中获取该实体的父级名称,例如:

option_name = $entity->getName() . ' (' . $entity->getParent()->getName() . ')' .

如果我自己构建表单会很容易,flat php html,但是由于我不喜欢做数百个无聊的小时,所以这些天我喜欢使用 symfony2 =)

欢迎任何意见...

【问题讨论】:

    标签: php forms symfony


    【解决方案1】:

    修改您的 Container 类并添加一个返回字符串的方法(根据您的喜好):

    class Container
    {
        public function getSelectLabel()
        {
            return $this->name . '(' . $this->parent->getName() . ')';
    
        }
    }
    

    然后将其用作property(只需将大小写替换为_,后跟小写即可):

    $builder->add('parent', 'entity', array(
        'label'    => 'Välj en fastighet för skärmen ',
        'class'    => 'BizTVContainerManagementBundle:Container'
        'property' => 'select_label',
    ));
    

    所以getSelectLabel() 变成了“select_label”,没有“get”。

    【讨论】:

    • 你差点让我哭了,Symfony2 是个梦。这个论坛也是。非常感谢!
    • 带下划线的建议不正确。您应该更喜欢这样保留外壳:'property' => 'selectLabel'
    猜你喜欢
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 2016-11-06
    • 1970-01-01
    相关资源
    最近更新 更多