0

大家好,我有一个“配置文件”表,当我尝试加载配置文件图像时,我需要在我的 default.ctp 视图文件中提供它。我目前使用 $current_user 以 $current_user['filename'] 的形式访问“用户”。我的用户和个人资料关系已在我的模型中相应地设置。如果有人可以提供帮助,我将不胜感激。提前致谢。

我的 AppController 的 beforeFilter 声明尝试:

$this->set('profile', $this->loadModel('Profile'));
$this->set('profile', $this->User->find('all'));

我的 default.ctp 查看文件代码尝试:

<?php echo $this->Html->image('/uploads/profile/filename/thumb/small/'.$profile['filename']); ?>

当前代码:

<?php echo $this->Html->image('/uploads/profile/filename/thumb/small/'.$current_user['filename']); ?>
4

2 回答 2

3

你应该澄清你的要求。如果您想要每个页面上的所有配置文件信息,那么这就是您所需要的:

public function beforeFilter() {
   $this->loadModel('Profile');
   $profiles = $this->Profile->find('all');
   $this->set('profiles', $profiles);
}


// any view:
foreach($profiles as $profile) : // e.g.
    echo $profile['Profile']['filename'];
endforeach;

但是您应该准确地指定要返回的数据(id, filename),否则您将在每个请求上返回大量数据,这将影响任何实际水平的性能。

您应该缓存此查询和结果,因为它可能不会经常更改。

编辑:根据您的需要考虑是否使用beforeFilter或。beforeRender

于 2012-12-10T09:57:41.503 回答
0

对于您似乎正在尝试做的事情,我建议您从元素内部使用 RequestAction 。

在这里检查(特别是 requestAction 的部分):

http://book.cakephp.org/2.0/en/views.html#elements

在您的元素中,只需调用以下内容:

$profile = $this->requestAction('users/profile/'.$current_user);

echo $this->Html->image('/uploads/profile/filename/thumb/small/'.$profile['Profile']['filename'];

其中 'users/profile/'.$current_user 是获取配置文件的方法的 url

于 2012-12-10T05:12:11.150 回答