-2

有可能,在 CAKEPHP 中,通过我的控制器(UsersController),将一个按钮(在视线中找到'默认')禁用?

并显示带有一些信息的标签?(一切都来自用户控制器)。

提前致谢。

[更新]

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

我的默认 TCP 视图

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

我的用户控制器

public function login(){

//IF I LOGGEDIN

//CODE THAT SHOW MESSAGE AND PUT VISIBLE A BUTTON

}
4

1 回答 1

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到视图,就像我们将完整的用户数据传递给视图一样。如果您只需要登录状态,强烈建议使用第二种方法。这样您就不会将不必要的数据传递给您的视图。略微增加加载时间。

于 2013-05-20T22:44:10.663 回答