在CakePHP 2.x中,您可以执行以下操作
AuthComponent::user()
在View中从Auth组件获取数据。在CakePHP 3.0beta3中,它抛出:
"Error: Class 'AuthComponent' not found"
是否有简单的方法可以从View中的AuthComponent获取数据?
mo49yndu1#
在视图中:
$this->request->session()->read('Auth.User.username');
在控制器中
$this->Auth->user('username');
hivapdat2#
您一开始就不应该在视图中使用AuthComponent。最好将数据从控制器传递到视图并访问它,或者更好的是,使用AuthHelper轻松地 Package 访问它(例如,通过从会话中阅读)。AuthUser(https://github.com/dereuromark/cakephp-tools/blob/master/src/View/Helper/AuthUserHelper.php)就是一个示例:
AuthUser
$this->AuthUser->id(); $this->AuthUser->user('username');
等等helper方法不需要在视图ctps中使用额外的use语句,使它们保持精简。当试图自动访问未定义的索引时,它也可以防止通知。
if ($this->AuthUser->user('foobarbaz')) { // no error thrown even if it never existed }
axr492tv3#
蛋糕3.5在 * 应用程序控制器 * 中:
public function beforeRender(Event $event) { .... $this->set('Auth', $this->components()->__get('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 } ?>
oxiaedzo4#
AuthComponent is deprecated as of 4.0.0和将由authorization和authentication插件替换。View Helper中内置了身份验证插件。
4条答案
按热度按时间mo49yndu1#
在视图中:
在控制器中
hivapdat2#
您一开始就不应该在视图中使用AuthComponent。最好将数据从控制器传递到视图并访问它,或者更好的是,使用AuthHelper轻松地 Package 访问它(例如,通过从会话中阅读)。
AuthUser
(https://github.com/dereuromark/cakephp-tools/blob/master/src/View/Helper/AuthUserHelper.php)就是一个示例:等等
helper方法不需要在视图ctps中使用额外的use语句,使它们保持精简。当试图自动访问未定义的索引时,它也可以防止通知。
axr492tv3#
蛋糕3.5
在 * 应用程序控制器 * 中:
在 .ctp 模板中:
oxiaedzo4#
AuthComponent is deprecated as of 4.0.0和将由authorization和authentication插件替换。
View Helper中内置了身份验证插件。