我已经编写了我的蛋糕应用程序来登录注册用户,它在有与用户关联的数据库模型的视图页面上运行良好。但是,在我的主页上不一定访问某些模型(PagesController,其中页面是即将发生的事件,联系我们,等等),AuthComponent不可用,或者至少,数组返回空---所以我无法检索登录人的用户名。
我尝试创建一个名为Page的模型,该模型属于用户,但不能解决我的问题。
为了进一步解释,我的应用程序显示了某个城市的某些住宿,夜总会,餐馆和要做的事情的列表,所有这些都显示用户是否登录。我不明白我哪里出错了,为什么。
这是我的AppController:
<?php
class AppController extends Controller {
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array('controller' => 'users', 'action' => 'view'),
'logoutRedirect' => array('controller' => 'pages', 'action' => 'index')
)
);
function beforeFilter() {
$this->Auth->allow('login', 'logout','index', 'view', 'condos', 'houses', 'hotels_and_motels', 'print_all_coupons', 'print_coupon', 'search', 'golf', 'charters', 'events', 'nightlife', 'shopping', 'visitors_info', 'contact_us');
}
}
?>
这是我在默认页面布局中访问用户名的地方:
<?php if(AuthComponent::user('id')) {
echo '<span style="font-variant:small-caps">Hello, '.AuthComponent::user('username').'</span> | ';
?>
答案 0 :(得分:3)
我已经找到了答案,经过几个星期的打击我的头在墙上。哦,你会笑的。对于那些在这里遇到这个问题的人来说,答案是.....确保你的标签之前或之后没有空格。就这些。认真。由于PHP打印出不在PHP标记中的所有内容,如果它找到要发送的内容,它将在其他所有内容之前发送标题。发送标头后,无法创建PHP会话。所以把这个粉笔砸到头上的文件!
答案 1 :(得分:0)
没有看到任何代码,我的第一直觉就是说你没有在AppController中加载组件,而只是在UsersController中加载组件。你在AppController中加载Auth组件吗?
<强>更新强>
以下是我建议访问用户信息的方法。
$this->Session->read('Auth.User.username');
更新2
从Pages Controller中删除$components
声明。它可能会超越会议。
更新3
如果您有自定义页面控制器,则可能与Core Pages控制器冲突。删除您的Pages控制器,看它是否正常工作。 Core Pages控制器仍将路由到Views/Pages/
目录以显示内容。