我正在学习Zend Framework 2,我正在尝试更改表单视图助手配置。 每个方法都有重新配置主题变量的方法,例如FormCollection helper有$ wrapper变量和setters / getters。 与Flashmessenger配置(在文档中描述)一样,我在module.config.php中创建了配置:
'view_helper_config' => array(
'flashmessenger' => array(
'message_open_format' => '<div%s><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><ul><li>',
'message_close_string' => '</li></ul></div>',
'message_separator_string' => '</li><li>'
),
'formcollection' => array(
'wrapper' => '<fieldset%4$s>TEEST %2$s%1$s%3$s</fieldset>',
'label_wrapper' => 'TEST <legend>%s</legend>',
),
这不起作用
----编辑:
我刚刚发现,view_helper_config仅用于服务FlashMessengerFactory。因此不可能以这种方式配置视图助手。也许有人有其他建议吗?
答案 0 :(得分:3)
我找到的最佳方式(现在)是覆盖现有的帮助器。所以通过formCollection的例子,我的module.config.php:
'view_helpers' => array(
'invokables' => array(
'formCollection' => 'MyLibrary\View\Helper\FormCollection',
),
MyLibrary当然是您想要的任何名称空间。在我的视图助手中,只有少数变量被覆盖:
namespace MyLibrary\View\Helper;
use Zend\Form\ElementInterface;
use Zend\Form\View\Helper\FormCollection as BaseFormCollection;
class FormCollection extends BaseFormCollection {
/**
* This is the default wrapper that the collection is wrapped into
*
* @var string
*/
protected $wrapper = '<fieldset%4$s>TEST %2$s%1$s%3$s</fieldset>';
/**
* This is the default label-wrapper
*
* @var string
*/
protected $labelWrapper = '<legend>TEST 2 %s</legend>';
}
用法与之前相同,因为我在内部配置invokables中使用了相同的名称:formCollection。
我不确定这是最好的方法。但它快速,易于操作,并且很容易完全覆盖辅助方法(例如render())。 顺便说一句,在我看来是唯一的方法。我们当然可以在使用前使用辅助方法,例如,查看脚本:
$this->formCollection()->setWrapper('new wrapper');
// now its use new wrapper
echo $this->formCollection('collection');