gpt4 book ai didi

php - Doctrine 2 自定义 ObjectMultiCheckbox 值

转载 作者:可可西里 更新时间:2023-10-31 22:16:25 24 4
gpt4 key购买 nike

如何使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com