我如何在Cell中使用组件?

时间:2015-07-17 06:54:18

标签: cakephp-3.0

我正在寻找一种在单元格内部使用组件的方法,有什么办法吗?

我试过了:

$this->loadComponent('SessionsActivity');

我的手机:

namespace App\View\Cell;

use Cake\Core\Configure;
use Cake\View\Cell;

class UserCell extends Cell

我的查询:

$user = $this->Users
    ->find()
    ->where([
        'Users.id' => $this->request->id
    ])
    ->contain([
        'Towns' => function ($q) {
            return $q->find('short');
        },
        'Countries' => function ($q) {
            return $q->find('short');
        }
    ])
    ->map(function ($user) {
        $user->online = $this->SessionsActivity->getOnlineStatus($user);
        return $user;
    })
    ->first();

2 个答案:

答案 0 :(得分:2)

CakePHP cells documentation使用相同的示例,假设您要显示已连接用户的收件箱。您希望访问Auth组件以获取已连接的用户ID。

AFAIK,Cells充当视图控制器,视图部件display.ctp文件和控制器部件,您可以在其中访问模型以生成视图的数据。

我使用CakePHP 3.0并且$this->_registry无效。

答案 1 :(得分:0)

你可以尝试:

$this->SessionsActivity = $this->_registry->load('SessionsActivity');

这是另一个问题,你是否应该在这里使用一个组件