ZF2 Form \ Element \ MultiCheckbox:如何在新行中获取每个项目?

布兰阿姆斯特朗

我一直在谷歌搜索无济于事。我的一种表单中有一个多复选框表单元素。这是我用来创建它的代码:

$this->add(array (
    'name' => 'thingyId',
    'type' => 'MultiCheckbox',
    'options' => array (
        'value_options' => $thingyArray,
    )
));

在我的视图脚本中,我有这个:

<?= $this->formRow($form->get('thingyId')); ?>

表单元素显示正常,但是所有复选框都位于一行中。我如何获得它,以便每个复选框都在新行上?

乌贾瓦尔·欧哈(Ujjwal ojha)

如果查看此链接,则可以看到第四个参数是不完整的。因此,您可以使用多种方法来完成任务。

方法1:

echo $this->formRow($element, null, null, 'template-file');

现在,创建一个名为的模板文件以根据template-file.phtml需要渲染该元素。

//template-file.phtml
<span><?php echo $label; ?></span><br/>
<?php foreach ($element->getValueOptions() as $key => $value): ?>
    <input type="checkbox" name="<?php echo $element->getName() ?>[]" value="<?php echo      $value; ?>">
    <span><?php echo $key; ?></span><br/>
<?php endforeach; ?>

方法二

通过扩展默认帮助器来创建自己的视图帮助器。

namespace Application\View\Helper;

class MyFormRow extends \Zend\Form\View\Helper\FormRow
{
       /**
        * @var string
        */
       protected $partial = 'template-file';
}

现在,向我们的应用程序告知您模块中的新帮助程序,

namespace Application;

class Module 
{
    public function getViewHelperConfig()
    {
        return array(
            'invokables' => array(
               'myFormRow' => 'Application\View\Helper\MyFormRow'
            )
        );
    }
}

最后使用助手:

echo $this->myFormRow($element);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章