【问题标题】:Doctrine ObjectMultiCheckBox form many-to-many groupedDoctrine ObjectMultiCheckBox 形式多对多分组
【发布时间】:2014-08-06 13:03:50
【问题描述】:

我有一个这样的数据库

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

目前,我有一个这样的表单,其中用户无法知道女巫动作对应于哪个功能

我想要这样的东西,动作和功能一起出现

有人知道怎么做吗?

我用于创建复选框的 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()
                )
            )
        )
    ));

【问题讨论】:

  • 你可以看到这个帖子stackoverflow.com/questions/18723340/…
  • 谢谢,但我的问题在我的视野中,我只需要按功能分组操作,我的后端工作正常
  • 向我们提供一些有关如何呈现多复选框的内部信息。您可能需要采用不同的方法来呈现复选框。
  • 我编辑了 ZF2 Checkbox 类,我会在这里发布解决方案

标签: php doctrine-orm zend-framework2


【解决方案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

【讨论】:

    【解决方案2】:

    这并不能完全回答您的问题。但是如果你想让用户知道witch action对应哪个函数,你可以将label_generator的函数修改为这个:

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

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

    【讨论】:

    • 感谢您的回答。这可以工作,但不是最好的方法。我的意图是制作可折叠的项目来为每个功能选择操作
    • 也许你可以通过一些使用这些标签的 javaScript 来做到这一点。在最后一个带有(action) User 的复选框之后插入一个div,您可以在其中写标题post
    • 嗯,这正是我需要的。但是用javascript? ZF2 和 Doctrine2 很棒,我只需要知道如何使用它们来制作这个
    • 是的,如果您只使用 zf2 和教义 2,那就太好了。我正在寻找类似的东西,但徒劳无功。
    猜你喜欢
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    相关资源
    最近更新 更多