0

こんにちは、私は「プロファイル」テーブルを持っています。プロファイル画像を読み込もうとしているので、これをdefault.ctpビューファイルで利用できるようにする必要があります。現在、$ current_userを使用して、$current_user['filename']の形式で'users'にアクセスしています。それに応じて、ユーザーとプロファイルの関係がモデルに設定されています。誰か助けていただければ幸いです。前もって感謝します。

私の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;

ただし、返すデータを正確に指定する必要があります(idfilename)。そうしないと、リクエストごとに大量のデータが返され、実際のレベルでパフォーマンスが低下します。

このクエリと結果はあまり頻繁に変更されない可能性があるため、キャッシュする必要があります。

編集:ニーズに応じて、を使用する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 に答える