Doctrine ObjectMultiCheckBox形成多对多分组

时间:2014-08-06 13:03:51

标签: php doctrine-orm zend-framework2

我有一个像这样的数据库

model database

我需要创建一个带有复选框的表单,将其保存到此数据库中。假设这些是我的记录的样子

db records

目前,我有一个这样的表格,其中用户不能知道女巫行动对应于哪个功能

actual form

我喜欢这样的动作和功能一起出现

enter image description here

有谁知道怎么做?

我创建复选框的PHP代码如下:

        $this->add(array(
        'type' => 'DoctrineModule\Form\Element\ObjectMultiCheckbox',
        'name' => 'functionAction',
        'options' => array(
            'label' => 'Functions:',
            'object_manager' => $this->getObjectManager(),
            'target_class' => 'Acl\Entity\FunctionAction',
            'label_generator' => function ($funcAction)
            {
                return $funcAction->getAction()->getDescription();
            },
            'is_method' => true,
            'find_method' => array(
                'name' => 'findByRole',
                'params' => array(
                    'role' => $this->getUser()->getRole()
                )
            )
        )
    ));

2 个答案:

答案 0 :(得分:1)

选项:

$options = array(
    'head_check_callback' => function ($last, $current)
    {
        return ! $last || $last->getFunction()->getId() != $current->getFunction()->getId();
    },
    'head_label_callback' => function (\Acl\Entity\FunctionAction $current)
    {
        $nome = $current->getFunction()->getDescription();
        return $current ? $nome : '';
    }
);

在视图中呈现

$this->FormGroupMultiCheckbox()->setOptions($options)->render($this->form->get('functionAction'));

已编辑的CheckBox类

http://pastebin.com/UcDN8xVp

答案 1 :(得分:0)

这并不能完全回答你的问题。但是如果你想让用户知道女巫动作对应于哪个功能,你可以修改label_generator对这个功能:

'label_generator' => function ($funcAction)
        {
           $action_desc = $funcAction->getAction()->getDescription();
           $function_desc =$funcAction->getFunction()->getDescription();
           return $action_desc.' '.$function_desc;
        },

这样您就可以将标签设为:创建用户删除帖子,...

希望这会有所帮助!