0

views\scriptsI have file にはheader.phtml、ユーザーに関する情報が配置されています: 名前、姓、写真

ここで、各コントローラー コンストラクターでこのデータを db から取得する必要があります。おそらく、抽象クラスなどを使用するより良い解決策でしょうか?

各コントローラーコンストラクターに同じコードを配置するのは難しいためです。

4

3 に答える 3

1

この質問を正しく理解していれば、各コントローラー構造で同じクエリを使用して 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')?>"/>
于 2013-07-23T14:40:59.170 に答える