php - Doctrine 2 自定义 ObjectMultiCheckbox 值

标签 php checkbox doctrine-orm zend-framework2 doctrine

如何使用 DoctrineModule\Form\Element\ObjectMultiCheckbox 自定义值?

我使用了 Zend\Form\Element\MultiCheckbox 并设置了如下值:

$this->add(array(
    'type' => 'Zend\Form\Element\MultiCheckbox',
    'name' => 'countries',
    'options' => array(
        'label' => 'Select countries',
        'value_options' => array(
            'value' => 1,
            'label' => 'United Kingdom',
            'continent' => 'Europe'
        )
    )
))

但现在我需要使用 Doctrine 2 Multicheckbox 并且我需要设置自定义值选项。我该怎么做?

我目前只有这个:

$this->add(array(
    'type' => 'DoctrineModule\Form\Element\ObjectMultiCheckbox',
    'name' => 'countries',
    'options' => array(
        'object_manager' => $this->em,
        'target_class'   => 'Module\Entity\Country'
    )
));

我需要这个来进行自定义 View 渲染。我想显示这样的国家:

欧洲
- 瑞典
- 英国
- 和其他人......

美国
- 加拿大
- 美国
- 其他国家...

最佳答案

已解决!

我创建了一个新的表单元素:

对象多选框:

namespace Application\Form\Element;

use Zend\Form\Element\MultiCheckbox;
use Zend\Stdlib\ArrayUtils;

class ObjectMultiCheckbox extends MultiCheckbox
{
    public function setValue($value)
    {
        if ($value instanceof \Traversable)
        {
            $value = ArrayUtils::iteratorToArray($value);

            foreach ($value as $key => $row)
            {
                $values[] = $row->getId();
            }

            return parent::setValue($values);
        }
        elseif ($value == null)
        {
            return parent::setValue(array());
        }
        elseif (!is_array($value))
        {
            return parent::setValue((array)$value);
        }
    }
}

它不是很漂亮,但是它将对象处理为 DoctrineModule\Form\Element\ObjectMultiCheckbox

使用此代码的我的实体始终具有标识符“id”,因此我可以像这样使用静态代码:$row->getId();它很丑陋,但它有效!

关于php - Doctrine 2 自定义 ObjectMultiCheckbox 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29629845/

相关文章:

php - 使用PHP上传文件并添加到MySQL数据库的路径

jQuery - 达到限制时禁用剩余的复选框

javascript - 当我返回 angularJS 中的 ui-view 时,复选框未选中

android - 暂时禁用 Lollipop CheckBox 上的动画

forms - 使用表单类型实体在 Symfony 中缓存 Doctrine 2 结果

php - Symfony Form 未在多对多关联中保存数据

php - 如何在 PHP 中提取 anchor 标记之间的文本?

php - 为什么使用命名空间 (PHP)

php - 当我使用外部 php 文件执行所有类型的查询时,如何获取 INSERT 查询的最后一个 id?

php - 无法使用 Symfony 登录