CAKEPHP - 通过特定控制器禁用/启用按钮

时间:2013-05-20 20:57:08

标签: cakephp

它可能,在CAKEPHP中,通过我的控制器(UsersController),放一个按钮(发现即时'默认')禁用?

并显示包含一些信息的标签? (来自用户控制器的所有内容)。

提前感谢。

[UPDATE]

我的目标是,当我在我的应用程序中进行身份验证时,我想为“LOGOUT”显示一个按钮(在默认视图中找到)。 另一方面,我想显示带有典型消息的标签(“欢迎用户名”)。此消息也将出现在LOGOUT按钮(和默认视图)

旁边

MY DEFAULT.TCP VIEW

  <form class="navbar-form pull-right">
     <?php echo $this->HTML->link('<i class="icon-user"></i>LOGIN',  array('controller'=>'users','action'=>'login'),array('class' => "btn btn-primary",'escape'=>false));
       echo $this->HTML->link("<i class='icon-pause icon-white'></i>",array(),array('escape'=>false));
     echo $this->Form->label('message');
       echo $this->HTML->link('<i class="icon-off"></i>LOGOUT', array('controller'=>'users','action'=>'logout1'), array('class' => "btn btn-primary",'escape'=>false)); ?>  
    </form>

我的USERSCONTROLLER

public function login(){

//IF I LOGGEDIN

//CODE THAT SHOW MESSAGE AND PUT VISIBLE A BUTTON

}

1 个答案:

答案 0 :(得分:0)

我这样做的方式如下。我打开我的AppController并在beforeRender()方法中添加以下代码:

public function beforeRender(){
    $this->set('authUser', $this->Auth->user());
    parent::beforeRender(); //make sure to do whatever is set in the controller beforeRender
}

现在,您可以查看视图中的authUser变量。当您获得数组中返回的某些数据时,您已登录。当您获得falsenull时,您不会。所以你可以这样做:

if ($authUser){
    //show logout button
} else {
    //show login button
}

// or keep it short

echo $authUser ? /*logout*/ : /*login*/;

当然,你可以扩展你的if语句,以获得你可能需要的准确性。或者您可以将AuthComponent::loggedIn变量解析为视图,方法与将完整的用户数据传递给视图的方式相同。如果您只需要登录状态,强烈建议使用第二种方法。这样您就不会将不必要的数据传递给视图。稍微增加加载时间。