CakePHP 3.x - View中的AuthComponent :: user()

时间:2014-12-19 20:02:54

标签: cakephp cakephp-3.0

在CakePHP 2.x中你可以做到

 AuthComponent::user()
在视图中

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

 "Error: Class 'AuthComponent' not found"

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

4 个答案:

答案 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轻松地对其进行包装访问(例如,通过读取会话)。

一个例子是AuthUserhttps://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,将由authorizationauthentication插件取代。

身份验证插件已内置View Helper