我使用Zend\Form\Factory在zend framework2中创建表单
$factory = new Zend\Form\Factory();
$factory->createForm(array(
'elements' => array(
array(
'spec' => array(
'name' => 'name',
),
),
),
'input_filter' => array(
'name' => array(
'validators' => array(
// validators for field "name"
),
'filters' => array(
// filters for field "name"
),
),
),
));
Run Code Online (Sandbox Code Playgroud)
您可以看到字段"name"有过滤器和验证器.有用.如果我使用fieldsets我有问题:
$factory->createForm(array(
'fieldsets' => array(
array(
'spec' => array(
'name' => 'common',
'elements' => array(
array(
'spec' => array(
'name' => 'name',
),
),
),
),
),
),
'input_filter' => array(
'name' => …Run Code Online (Sandbox Code Playgroud) 现在我这样做:
public function indexAction() {
...
$view = new ViewModel(array(
'foo' => 'bar',
));
return $view;
}
Run Code Online (Sandbox Code Playgroud)
问题是我想在$ view渲染之后和布局渲染之前做一些事情:
public function indexAction() {
...
$view = new ViewModel(array(
'foo' => 'bar',
));
$layout = $this->layout();
$layout->content = $view->render();
...
// here I want to do some important action
...
$html = $layout->render();
return $this->getResponse()->setContent($html);
}
Run Code Online (Sandbox Code Playgroud)
但是没有方法render().在ZF1中,我可以呈现视图:
$view = new Zend_View($data);
$html = $view->render($templateName);
Run Code Online (Sandbox Code Playgroud)
我怎么能在ZF2中做到这一点?
我有字段集的表单:
$formConfig = array(
'fieldsets' => array(
...
);
);
$factory = new Zend\Form\Factory();
$form = $factory->createForm($formConfig);
echo $this->form($form);
Run Code Online (Sandbox Code Playgroud)
它呈现如下:
<form>
<fieldset>
<legend>Fieldset label</legend>
<label><span>Elem 1</span><input type="text" name="f1[el1]" /></label>
<label><span>Elem 2</span><input type="text" name="f1[el2]" /></label>
<label><span>Elem 3</span><input type="text" name="f1[el3]" /></label>
</fielset>
</form>
Run Code Online (Sandbox Code Playgroud)
问题是我需要在传奇之后包装内容:
<form>
<fieldset>
<legend>Fieldset label</legend>
<div class="wrapper">
<label><span>Elem 1</span><input type="text" name="f1[el1]" /></label>
<label><span>Elem 2</span><input type="text" name="f1[el2]" /></label>
<label><span>Elem 3</span><input type="text" name="f1[el3]" /></label>
<div>
</fielset>
</form>
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
在控制器中我可以从路径中获取参数$this->params()->fromRoute('param1')
如何在Module OnBootstrap()函数中执行此操作?
namespace MyModule;
use Zend\EventManager\EventInterface;
class Module
{
public function onBootstrap(EventInterface $event)
{
// here I need to get parameter from route
}
}
Run Code Online (Sandbox Code Playgroud) 可能的重复:
如何缩小 php 页面 html 输出?
我的意思是去除 html 中的所有换行符和空格并将其放在一行上。
我试过这个功能
public static function htmlCompress($html)
{
preg_match_all('!(<(?:code|pre|script).*>[^<]+</(?:code|pre|script)>)!',$html,$pre);
$html = preg_replace('!<(?:code|pre).*>[^<]+</(?:code|pre)>!', '#pre#', $html);
$html = preg_replace('#<!–[^\[].+–>#', '', $html);
$html = preg_replace('/[\r\n\t]+/', ' ', $html);
$html = preg_replace('/>[\s]+</', '><', $html);
$html = preg_replace('/[\s]+/', ' ', $html);
if (!empty($pre[0])) {
foreach ($pre[0] as $tag) {
$html = preg_replace('!#pre#!', $tag, $html,1);
}
}
return $html;
}
Run Code Online (Sandbox Code Playgroud)
但有时会出现像“?”这样的符号 因为这个字符串
$html = preg_replace('/[\s]+/', ' ', $html);
Run Code Online (Sandbox Code Playgroud)
为什么会出现这个符号以及如何压缩html?