【问题标题】:how to call controllers from the cakephp default layout?如何从 cakephp 默认布局中调用控制器?
【发布时间】:2015-06-05 23:15:42
【问题描述】:

我有一个名为UsersController 的控制器,有没有办法可以将此控制器的一些值输出到 cakephp 默认布局? 这是我尝试过的,default.ctp:

<?php foreach ($users as $user): ?>
    <ul class="nav navbar-nav navbar-right">
        <?php if (!$this->Session->read('Auth.User.id')) : ?>
        <li>
            <?php echo $this->Html->link('Login',array('controller' => 'us 'action' => 'login', 'full_base' =>'true)); ?></li>
        <li>
            <?php echo $this->Html->link('Register', array('controller' => 'users', 'action' => 'add', 'full_base' => true)); ?>
        </li>
        <?php else: ?>
        <li class="dropdown">
            <a href="<?php echo $this->Html->url(array('controller' => 'users', 'action' => 'edit', 'full_base' => true)); ?>" class="dropdown-toggle" data-toggle="dropdown">
                <?php if(empty($user[ 'User'][ 'filename'])){ ?>
                <i class="fa fa-user fa-lg"></i>
                <?php }else{ echo $this->Html->image($user['User']['filename'], array('alt' => $user['User']['username'],'class'=>'img-responsive img-rounded','width'=>'32','height'=>'32','style'=>'display:inline; background:red;')); } ?>
                <?php $users[ 'User'][ 'username']; ?> <span class="caret"></span>
            </a>
            <ul class="dropdown-menu" role="menu">
                <li>
                    <a href="<?php echo $this->Html->url(array('controller' => 'users', 'action' => 'edit', 'full_base' => true)); ?>"> <i class="fa fa-gear fa-lg"></i> Settings</a>
                </li>

                <li>
                    <a href="<?php echo $this->Html->url(array('controller' => 'users', 'action' => 'logout', 'full_base' => true)); ?>"> <i class="fa fa-power-off fa-lg"></i> Logout</a>
                </li>
                <li><a href="#">Something else here</a>
                </li>
                <li class="divider"></li>
                <li><a href="#">Separated link</a>
                </li>
            </ul>
        </li>
        <?php endif; ?>
    </ul>
<?php endforeach; ?>

这是我的 AppController.php:

public function beforeFilter(){
    return $this->getuser();

}   
public function getuser($id = null){
    $this->loadModel('User');
    $user = $this->User->find('all', array(
            'conditions' => array('User.id' => $id)
    ));
$this->set('users',$user);
}

这段代码的问题在于,它一直返回以下通知,

注意(8):未定义索引:User [APP\View\Layouts\default.ctp, line 71]

请问我该如何解决这个问题?

【问题讨论】:

  • 你的UsersController在哪里确认$user有正确的数据

标签: php cakephp cakephp-2.0


【解决方案1】:

如果你想要登录用户的所有字段,你可以在你的视图中使用它。

$user = $this->Session->read('Auth.User'));

这将返回用户的所有存储数据(用户名、文件名、用户表中的所有字段)

【讨论】:

    【解决方案2】:

    只需更改您使用过的控制器

    public function getuser($id = null){

    这种用法

    public function beforeRender($id = null) {
    

    您的 AppController.php 代码应如下所示

    public function beforeFilter(){
        return $this->getuser();
    }
    
    public function beforeRender($id = null){
       $this->loadModel('User');
       $user = $this->User->find('all', array(
               'conditions' => array('User.id' => $id)
      ));
    $this->set('users',$user);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-14
      • 2012-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多