【发布时间】:2011-02-02 12:55:54
【问题描述】:
目前我发现我必须不断为不同的模块复制部分内容。
我想为所有要访问的部分提供一个案例目录。
有没有人有好的方法呢?
谢谢
【问题讨论】:
目前我发现我必须不断为不同的模块复制部分内容。
我想为所有要访问的部分提供一个案例目录。
有没有人有好的方法呢?
谢谢
【问题讨论】:
$this->partial('directoryOfPartials/partial.phtml', $model);
我认为您也可以将 $this->partial 与三个参数一起使用。第二个参数是模块名称,第三个参数是模型。
取自: http://framework.zend.com/manual/en/zend.view.helpers.html
示例 #10 渲染部分 其他模块有时部分会 存在于不同的模块中。如果你 知道模块的名字,你可以 将其作为第二个参数传递给 部分()或部分循环(), 将 $model 参数移到第三个 位置。例如,如果有一个 您希望使用的寻呼机部分 在“列表”模块中,您可以抓取 如下:
<?php echo $this->partial('pager.phtml', 'list', $pagerData) ?>通过这种方式,您可以重复使用部分 专门为其他创建 模块。也就是说,这很可能是 更好的实践把可重用 共享视图脚本路径中的部分。
编辑 - 从控制器的操作范围内访问视图部分
$this->view->getHelper('partial')->partial('comments.phtml');
【讨论】:
非常感谢:)
但是,如何通过控制器执行此操作?我有 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);
按要求弹出窗口,但出现以下错误:
Problem: Method "partial" does not exist and was not trapped in __call()
我有点假设 $this->view->partial 与在视图模板中使用 $this->partial 相同,但我猜不是。想法?
通过解决:
Bootstrap initView,添加:
$view->addScriptPath('../application/layouts/partials');
将我的部分内容移至该目录。然后在我的控制器中:
$this->view->layout()->setLayout('ajax');
$this->view->form = $form;
$this->renderScript('login.phtml');
感谢#zftalks SmartSsa
【讨论】: