CakePHP 3.x -在视图中验证组件::user()

5rgfhyps  于 2022-11-11  发布在  PHP
关注(0)|答案(4)|浏览(125)

在CakePHP 2.x中,您可以执行以下操作

AuthComponent::user()

在View中从Auth组件获取数据。在CakePHP 3.0beta3中,它抛出:

"Error: Class 'AuthComponent' not found"

是否有简单的方法可以从View中的AuthComponent获取数据?

mo49yndu

mo49yndu1#

在视图中:

$this->request->session()->read('Auth.User.username');

在控制器中

$this->Auth->user('username');
hivapdat

hivapdat2#

您一开始就不应该在视图中使用AuthComponent。最好将数据从控制器传递到视图并访问它,或者更好的是,使用AuthHelper轻松地 Package 访问它(例如,通过从会话中阅读)。
AuthUserhttps://github.com/dereuromark/cakephp-tools/blob/master/src/View/Helper/AuthUserHelper.php)就是一个示例:

$this->AuthUser->id();
$this->AuthUser->user('username');

等等
helper方法不需要在视图ctps中使用额外的use语句,使它们保持精简。当试图自动访问未定义的索引时,它也可以防止通知。

if ($this->AuthUser->user('foobarbaz')) { // no error thrown even if it never existed
}
axr492tv

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 } ?>
oxiaedzo

oxiaedzo4#

AuthComponent is deprecated as of 4.0.0和将由authorizationauthentication插件替换。
View Helper中内置了身份验证插件。

相关问题