CakePHP 2.x将用户消息发送到元素(';菜单';)

CakePHP 2.x将用户消息发送到元素(';菜单';),cakephp,menu,message,Cakephp,Menu,Message,我想知道向每次加载页面时都会出现的元素发送数据的最佳方式 例如,一旦用户登录,我就必须恢复有关他的一些信息。使用SessionHelper恢复User.id、User.name等,如下所示: <?php if( !$this->Session->check('Auth.User') ): ?> <div class="taille_btn"> <a href="/users/register"> &l

我想知道向每次加载页面时都会出现的元素发送数据的最佳方式

例如,一旦用户登录,我就必须恢复有关他的一些信息。使用SessionHelper恢复User.id、User.name等,如下所示:

<?php if( !$this->Session->check('Auth.User') ): ?>
    <div class="taille_btn">
        <a href="/users/register">
            <div class="link_head">Inscription</div>    
        </a>
    </div>  
    <div class="taille_btn">
        <a href="/users/login">
            <div class="link_head">Connexion</div>  
        </a>    
    </div>
<?php else: ?>
    <div class="name_user">
        <a href="/users/view/<?= $this->Session->read('Auth.User.id'); ?>">
            <?= $this->Session->read('Auth.User.prenom'); ?>
        </a>
    </div>
<?php endif; ?>

但是,如何恢复用户收到的所有消息? 更具体地说,我应该在哪里查询数据库?在AppController中?在组件中

谢谢你的帮助:)

例如,一旦用户登录,我就必须恢复有关他的一些信息。使用SessionHelper恢复User.id、User.name等,如下所示:

<?php if( !$this->Session->check('Auth.User') ): ?>
    <div class="taille_btn">
        <a href="/users/register">
            <div class="link_head">Inscription</div>    
        </a>
    </div>  
    <div class="taille_btn">
        <a href="/users/login">
            <div class="link_head">Connexion</div>  
        </a>    
    </div>
<?php else: ?>
    <div class="name_user">
        <a href="/users/view/<?= $this->Session->read('Auth.User.id'); ?>">
            <?= $this->Session->read('Auth.User.prenom'); ?>
        </a>
    </div>
<?php endif; ?>
这不是一个好主意,最好是将用户数据从auth组件设置到视图。例如,会话中将不存在无状态身份验证

在AppController beforeRender()中,只需添加以下内容:

$this->set('userData', $this->Auth->user());
并根据需要访问视图中的
$userData
。我已经写了一篇文章,这使得处理数据更加方便。对Cake3来说,这是它的一部分

但是,如何恢复用户收到的所有消息?更具体地说,我应该在哪里查询数据库?在AppController中?在组件中

如果在所有页面上都需要它,也可以在beforeRender()回调中使用:

$this->loadModel('Message')
// Your logic goes into the model method
$messages = $this->Message->byUser($this->Auth->user('id'));
// Set it to the view:
$this->set('messages', $messages);
如果您只想获取特定页面上的数据,请对Cake2使用requestAction(),在Cake3中,您可以对整个任务使用视图单元格

不要对应用程序的链接执行此操作:

<a href="/users/register">

相反,您应该使用HtmlHelpers link()方法。如果你不这样做,路由将无法工作

例如,一旦用户登录,我就必须恢复有关他的一些信息。使用SessionHelper恢复User.id、User.name等,如下所示:

<?php if( !$this->Session->check('Auth.User') ): ?>
    <div class="taille_btn">
        <a href="/users/register">
            <div class="link_head">Inscription</div>    
        </a>
    </div>  
    <div class="taille_btn">
        <a href="/users/login">
            <div class="link_head">Connexion</div>  
        </a>    
    </div>
<?php else: ?>
    <div class="name_user">
        <a href="/users/view/<?= $this->Session->read('Auth.User.id'); ?>">
            <?= $this->Session->read('Auth.User.prenom'); ?>
        </a>
    </div>
<?php endif; ?>
这不是一个好主意,最好是将用户数据从auth组件设置到视图。例如,会话中将不存在无状态身份验证

在AppController beforeRender()中,只需添加以下内容:

$this->set('userData', $this->Auth->user());
并根据需要访问视图中的
$userData
。我已经写了一篇文章,这使得处理数据更加方便。对Cake3来说,这是它的一部分

但是,如何恢复用户收到的所有消息?更具体地说,我应该在哪里查询数据库?在AppController中?在组件中

如果在所有页面上都需要它,也可以在beforeRender()回调中使用:

$this->loadModel('Message')
// Your logic goes into the model method
$messages = $this->Message->byUser($this->Auth->user('id'));
// Set it to the view:
$this->set('messages', $messages);
如果您只想获取特定页面上的数据,请对Cake2使用requestAction(),在Cake3中,您可以对整个任务使用视图单元格

不要对应用程序的链接执行此操作:

<a href="/users/register">

相反,您应该使用HtmlHelpers link()方法。如果你不这样做,路由将无法工作