我敢肯定这是一个简单的单行,但我似乎无法找到它.
如何为特定操作使用不同的布局文件?
更新:这对我有用,谢谢!
// Within controller
$this->_helper->_layout->setLayout('other-layout') //other-layout.phtml
//Within view script
<?php $this->layout()->setLayout('other-layout'); ?>
Run Code Online (Sandbox Code Playgroud) 我想让Zend_Layout包含header.phtml和footer.phtml与[layouy name] .phtml.
我怎么做?我试图在Zend_Layout,Zend_Layout_Controller_Plugin_Layout中读取代码.我还是弄不清楚..
我有以下控制器,除了其他方法,它有这个:
class EquipasController extends OccControllerAction {
public function listaAction()
{
$this->_helper->viewRenderer->setNoRender(true);
$this->_helper->layout->disableLayout();
}
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我当时正在等待:http: //www.example.com/equipas/lista/
控制器将执行,我将看不到我的视口上的布局渲染.
但事实并非如此.我得到了我的主页.
在ZF上我们通常会说:如果某个操作不存在,主页应该出现?
注意:如果,而不是:http: //www.example.com/equipas/lista/
我这样做, http://www.example.com/equipas/adasdas21232131/ 不存在.
我得到相同的主页渲染.
这种行为可能是什么原因?
一个Zend新手,MEM
案例:您正在使用Zend Framework开发一个站点,并且需要相关链接到部署webapp的文件夹.即mysite.com/folder在线和localhost:8080正在开发中.
无论部署位置如何,以下在控制器中都很好用:
$this->_helper->redirector->gotoSimple($action, $controller, $module, $params);
Run Code Online (Sandbox Code Playgroud)
以下是一个意见稿,即.index.phtml:
<a href="<?php echo $this->url(array('controller'=>'index', 'action' => 'index'), null, true); ?>">
Run Code Online (Sandbox Code Playgroud)
但是,如何在链接到图像或样式表时获得正确的基本路径?(例如,在layout.phtml文件中):
<img src='<?php echo WHAT_TO_TYPE_HERE; ?>images/logo.png' />
Run Code Online (Sandbox Code Playgroud)
和
$this->headLink()->appendStylesheet( WHAT_TO_TYPE_HERE . 'css/default.css');
Run Code Online (Sandbox Code Playgroud)
WHAT_TO_TYPE_HERE 应该用给出的东西代替
<img src="/folder/images/logo.png />` on mysite.com and `<img src="/images/logo.png />
Run Code Online (Sandbox Code Playgroud)
在localhost上
我有一个控制器,我想用于ajax脚本调用和设置会话变量,获取信息等.我如何设置它,以便该特定控制器不使用默认布局(特别是没有布局),以便它可以来回发送XML/JSON消息?
所以我在layout.phtml上设置了一些默认元标记
$this->headTitle() and $this->headMeta()->appendName()
Run Code Online (Sandbox Code Playgroud)
并在layout.phtml的标题中回显
我的问题是:如何从视图文件中更改这些默认元标记,以便替换它们?
我试过用:
$this->headMeta()->appendName() or setName()
Run Code Online (Sandbox Code Playgroud)
它不会替换旧的默认元标记,而是创建一个全新的元标记.我怎样才能更换它们?
我编写了一个Zend应用程序,并将Wordpress用于博客.当我第一次安装Wordpress时,我将其主题化,以便它使用与主应用程序相同的标头等.我已经两次重做主题,不得不重做Wordpress主题来匹配.Wordpress有没有办法使用我的Zend布局?我的第一个想法是将我的布局分解为页眉/页脚文件,并使用完整路径从Wordpress中包含它们.虽然它可行,但它远非理想(我宁愿将布局文件保持为一个整体).
当试图遵守既定的最佳实践,避免像单身,注册表,静态属性和基本控制器,我怎么能填充我的布局(和谐音的布局设计中使用),与仅跨越所有操作使用的布局和共同的数据?
典型的场景是基于可变数据的菜单,如数据库.记住问题的分离,视图/布局不应该直接与后端对话,而应该告诉要包含什么.
如果不使用Zend_Layout中的单例"功能",则无法使用前端控制器插件.该插件只知道请求和响应对象,也无法访问控制器,视图或布局.
Zend的动作助手有init/preDispatch/postDispatch方法.可以向HelperBroker添加动作助手(例如使用引导程序),这些将在正常的应用程序流程中执行.
使用init方法将数据注入视图是不可能的,因为它在控制器/视图准备就绪之前被触发.preDispatch/postDispatch是可能的,但并不完美,因为在执行控制器操作时总是会触发这些方法.
这意味着Zend_Controller_Action :: _ forward()的所有使用也将在所有动作助手中执行preDispatch/postDispatch.这不有,除了速度的代码有什么大的影响,我真的不希望被设置视图(或视图助手)可变几次.可以使用某种$ firstRun变量来解决这个问题,但我真的不想在我自己的代码中跟踪它.
另一种方法是在引导程序中执行此操作,但在我看来它确实不属于那里.
那么,我如何使用数据库中的数据填充布局/视图助手,只执行一次并仍然保持良好的关注点分离?
我想使用我发送的电子邮件的布局.我目前正在为网页使用Zend Layout,但我也希望对我的电子邮件进行主题化.
这是我尝试过的.
这是我发送电子邮件的功能
$layout = Zend_Layout::getMvcInstance();
$this->_view->render($template);
$html = $layout->render('email');
$this->setBodyHtml($html,$this->getCharset(), $encoding);
$this->send();
Run Code Online (Sandbox Code Playgroud)
电子邮件布局很简单
The email content
<?php echo $this->layout()->content; ?>
Run Code Online (Sandbox Code Playgroud)
当它作为电子邮件发出时,它只是......
The email content
Run Code Online (Sandbox Code Playgroud) 我有一个华丽的页面,前端有图像旋转器供客户使用.
对于后端我想要有不同的布局.我可以有多种布局吗?
一点点暗示会很明显
zend-framework ×10
zend-layout ×10
php ×7
zend-view ×4
layout ×3
meta-tags ×1
modular ×1
views ×1
wordpress ×1