bla*_*ong 3 zend-form zend-framework2
我一直在谷歌搜索无济于事.我的一个表单中有一个多复选框表单元素.这是我用来创建它的代码:
$this->add(array (
'name' => 'thingyId',
'type' => 'MultiCheckbox',
'options' => array (
'value_options' => $thingyArray,
)
));
Run Code Online (Sandbox Code Playgroud)
在我的视图脚本中,我有这个:
<?= $this->formRow($form->get('thingyId')); ?>
Run Code Online (Sandbox Code Playgroud)
表单元素显示正常,但所有复选框都在一行上.如何获取它以使每个复选框都在新行上?
如果查看此链接,则可以看到第四个参数是partial.因此,您可以使用许多方法来完成任务.
方法1:
echo $this->formRow($element, null, null, 'template-file');
Run Code Online (Sandbox Code Playgroud)
现在,创建一个名为的模板文件,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; ?>
Run Code Online (Sandbox Code Playgroud)
方法2
通过扩展默认帮助程序来创建自己的视图助手.
namespace Application\View\Helper;
class MyFormRow extends \Zend\Form\View\Helper\FormRow
{
/**
* @var string
*/
protected $partial = 'template-file';
}
Run Code Online (Sandbox Code Playgroud)
现在,通知我们的应用程序我们的模块中的新助手,
namespace Application;
class Module
{
public function getViewHelperConfig()
{
return array(
'invokables' => array(
'myFormRow' => 'Application\View\Helper\MyFormRow'
)
);
}
}
Run Code Online (Sandbox Code Playgroud)
最后使用帮助器:
echo $this->myFormRow($element);
Run Code Online (Sandbox Code Playgroud)