Php 在布局/视图中显示控制器的一部分

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' =>

我正在使用CakePHP,我编写了一个组件,它使用一个名为“Users”的组件来处理用户登录、注销、注册等。我想在侧栏的default.ctp布局中呈现它。我该怎么做

我试过:

    <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
,但这仍然需要启动组件以获取信息。不管怎样,如果需要组件的信息,您都需要将其包含在所有位置。但是,作为一种替代方法,您可以将信息存储在会话中,前提是这些信息没有被更新。