在CakePHP 2.x中你可以做到
AuthComponent::user()
在视图中从Auth组件获取数据。在CakePHP 3.0beta3中,它抛出:
"Error: Class 'AuthComponent' not found"
是否有一种从View中的AuthComponent获取数据的简单方法?
答案 0 :(得分:14)
在视图中:
<script>
$(function(){
// Trigger this when something is clicked
$(document).click(function(e){
// Toggle the hidden class based on if the current element is 1
// or if it is contained in an element with ID of 1
$("#1").toggleClass('hidden',!((e.target.id== "1") || $(e.target).closest('#1').length))
});
});
</script>
在控制器
中$this->request->session()->read('Auth.User.username');
答案 1 :(得分:8)
您应该从未在视图中使用过AuthComponent。 最好是将数据从控制器传递到视图并访问它,或者更好的是,使用AuthHelper轻松地对其进行包装访问(例如,通过读取会话)。
一个例子是AuthUser
(
https://github.com/dereuromark/cakephp-tools/blob/master/src/View/Helper/AuthUserHelper.php):
$this->AuthUser->id();
$this->AuthUser->user('username');
等
帮助方式在您的视图ctps中不需要额外的使用语句,并使它们保持精简。 它还会在尝试自动访问未定义的索引时阻止通知。
if ($this->AuthUser->user('foobarbaz')) { // no error thrown even if it never existed
}
答案 2 :(得分:2)
Cake 3.5
在 AppController 中:
public function beforeRender(Event $event) {
....
$this->set('Auth', $this->Auth);
}
在 .ctp 模板中:
<?php if (!$Auth->user()) { ?>
<a class="login" href="<?php echo $this->Url->build($Auth->getConfig('loginAction')); ?>">Login</a>
<?php } else { ?>
<div class="name"><?php echo h($Auth->user('name')); ?></div>
<?php } ?>
答案 3 :(得分:0)
AuthComponent is deprecated as of 4.0.0,将由authorization和authentication插件取代。
身份验证插件已内置View Helper。