views\scripts
I have file にはheader.phtml
、ユーザーに関する情報が配置されています: 名前、姓、写真
ここで、各コントローラー コンストラクターでこのデータを db から取得する必要があります。おそらく、抽象クラスなどを使用するより良い解決策でしょうか?
各コントローラーコンストラクターに同じコードを配置するのは難しいためです。
views\scripts
I have file にはheader.phtml
、ユーザーに関する情報が配置されています: 名前、姓、写真
ここで、各コントローラー コンストラクターでこのデータを db から取得する必要があります。おそらく、抽象クラスなどを使用するより良い解決策でしょうか?
各コントローラーコンストラクターに同じコードを配置するのは難しいためです。
この質問を正しく理解していれば、各コントローラー構造で同じクエリを使用して DB を呼び出し、返された結果をビュー変数に割り当てて、それらを header.phtml に出力する必要があります。それがあなたが望むものなら、一緒に読んでください。
メモリが問題にならない場合、これを行う簡単な方法は、ブートストラップでZend_Registryを使用してレジストリに必要なデータを含む json でエンコードされた配列を格納することです。このように、DB に対して 1 つのクエリを作成するだけで済みます。
Bootstrap.php
$row = $db->fetchRow("SELECT name, surname, url FROM people WHERE id = '127'");
$userData = array('name' => $row ['name'], 'surname' => $row ['surname'], 'photo' => $row ['url']);
Zend_Registry::set('user_data', json_encode($userData));
これで、このコードをコントローラーに配置する必要はありません。Zend_Registry
必要なプロパティを読み込んで返すビュー ヘルパーを作成するだけです。header.phtml
から直接呼び出すことができます。
/views/helpers/User.php
class Zend_View_Helper_User
{
public function user($property)
{
$userData = Zend_Registry::get('user_data');
$userData = json_decode($userData, true);
return $userData[$property];
}
}
header.phtml
<p><?=$this->user('name')?> <?=$this->user('surname')?></p>
<img src="<?=$this->user('photo')?>"/>