2012-09-16 89 views
6

所以我想要做的是,在我的主布局中,为登录用户提供了一个菜单,而对于匿名用户则有一个不同的菜单。从视图中获取当前用户

布局将在每个页面上使用,所以我不知道如何做到这一点,正如我所见,Auth Component只能在控制器中使用,如果必须这样做会很好这只有一种观点,但对于每一种观点,我怎么能做到这一点?我必须在AppController上做些什么吗?

我想要做的基本上是

// layout 
<?php if(logged): ?> 
Welcome <?php echo $user; ?> 
<?php else: ?> 
Welcom anon, Log in? 
<?php endif; ?> 

回答

15

您可以访问登录的用户在使用验证组件以及您的视图。从manual

一旦用户登录,你会经常需要有关当前用户的一些特殊 信息。您可以使用AuthComponent :: user()访问当前登录的用户 。此方法是静态的,并且可以在加载AuthComponent后全局使用 。您可以 访问它既可作为一个实例方法或静态方法:

// Use anywhere 
AuthComponent::user('id') 

// From inside a controller 
$this->Auth->user('id'); 

你应该能够做这样的事情:

// layout 
<?php if(AuthComponent::user('name')): ?> 
    Welcome <?php echo AuthComponent::user('name'); ?> 
<?php else: ?> 
    Welcom anon, Log in? 
<?php endif; ?> 
+0

非常感谢!这就像一个魅力。 – gosukiwi

+0

不客气! – Hoff

+0

我猜这已被弃用?我有一个例外,试图在5.2中做到这一点。我使用5.2的解决方案是让用户分享视图。 – Grigio