模块化Zend框架,具有部分基础

azz*_*z0r 7 zend-framework partials

目前我发现我必须为不同的模块重复部分.

我想有一个案例目录,供所有部分访问.

有没有人有这样做的好方法?

谢谢

Bal*_*an1 8

$this->partial('directoryOfPartials/partial.phtml', $model);
Run Code Online (Sandbox Code Playgroud)

我想你也可以使用$ this-> partial和三个参数.第二个参数是模块名称,第三个参数成为模型.

摘自:http: //framework.zend.com/manual/en/zend.view.helpers.html

示例#10在其他模块中渲染部分有时某个部分将存在于不同的模块中.如果您知道模块的名称,则可以将其作为第二个参数传递给partial()或partialLoop(),将$ model参数移动到第三个位置.例如,如果有一个寻呼机部分你希望在'list'模块中使用它,你可以按如下方式获取它:

<?php echo $this->partial('pager.phtml', 'list', $pagerData) ?>
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以重复使用专门为其他模块创建的部分.也就是说,将可重用的部分放在共享视图脚本路径中可能是更好的做法.

编辑 - 从Controller的操作范围内访问视图部分

$this->view->getHelper('partial')->partial('comments.phtml');
Run Code Online (Sandbox Code Playgroud)


azz*_*z0r 2

非常感谢:)

但是,如何通过控制器执行此操作?我有 fancybox 并设置了 ajax 布局:

$this->view->layout()->setLayout('ajax');

$errors = array('You have lost your rights to download this clip, you have downloaded it the maximum amount of times.');

$this->render($this->view->partial('partials/errors.phtml', 'default', array('errors' => $errors)), NULL, true);
Run Code Online (Sandbox Code Playgroud)

按要求弹出窗口,但出现以下错误:

Problem: Method "partial" does not exist and was not trapped in __call()
Run Code Online (Sandbox Code Playgroud)

我有点假设 $this->view->partial 与在视图模板中使用 $this->partial 相同,但我想不是。有想法吗?

解决通过:

Bootstrap initView,添加:

$view->addScriptPath('../application/layouts/partials');
Run Code Online (Sandbox Code Playgroud)

将我的部分内容移至该目录。然后在我的控制器中我这样做:

$this->view->layout()->setLayout('ajax');
$this->view->form  = $form;
$this->renderScript('login.phtml');
Run Code Online (Sandbox Code Playgroud)

感谢 #zftalks SmartSsa