Php 在布局/视图中显示控制器的一部分
我正在使用CakePHP,我编写了一个组件,它使用一个名为“Users”的组件来处理用户登录、注销、注册等。我想在侧栏的default.ctp布局中呈现它。我该怎么做 我试过:Php 在布局/视图中显示控制器的一部分,php,cakephp,Php,Cakephp,我正在使用CakePHP,我编写了一个组件,它使用一个名为“Users”的组件来处理用户登录、注销、注册等。我想在侧栏的default.ctp布局中呈现它。我该怎么做 我试过: <div id="leftNav"> <div id="login-block" class="block"> <?php echo $this->element('loginblock', array('component' =>
<div id="leftNav">
<div id="login-block" class="block">
<?php echo $this->element('loginblock', array('component' => 'user')); ?>
<ul>
<li><a href="/users/login">Login</a></li>
<li><a href="/users/register">Register</a></li>
<li><a href="/users/logout">Logout</a></li>
</ul>
</div>
</div>
但这是不成功的。根据定义,您不能渲染组件。只有MVC架构的V部分可以呈现(或者至少应该呈现),组件属于C部分 将信息从组件传递到视图的最佳方式是通过控制器将其设置如下:
class MyComponent extends Object {
function initialize(&$controller) {
$this->controller =& $controller;
}
function someMethod() {
$this->controller->set('user', $someInformation);
}
}
在视图中,您可以像往常一样输出
$user
变量。loginblock.ctp文件的内容是什么?“没有。”-如何呈现不存在的内容?或者为此向其传递参数?但用户组件仅在*页上处于活动状态。我希望能够在每个页面上呈现它的视图(login.ctp或logout.ctp)。也就是说,在辩论中。ctp@Malfist如果不包含组件,将如何渲染其视图?如果要根据用户组件中确定的信息显示内容,则每次都需要运行该组件。您可以在视图中使用requestAction
,但这仍然需要启动组件以获取信息。不管怎样,如果需要组件的信息,您都需要将其包含在所有位置。但是,作为一种替代方法,您可以将信息存储在会话中,前提是这些信息没有被更新。