1

現在、機能しているライター MVC があります。私はファーストネームとラストネームのプロパティを持っています。インデックスにフルネームを表示したい。これにはいくつかの方法があることを理解しています。

ビューにロジックを記述できます

echo $writer['Writer']['firstname'] . " " . $writer['Writer']['lastname'];

これを行うためのヘルパー関数を記述して、ビューをきれいに保つことができます。これが私が現在行っている方法です。

echo fullName($writer['Writer']['firstname'], $writer['Writer']['lastname']);

しかし、フルネーム メソッドを持つライター クラスを作成する方がよいかどうか疑問に思っていました。次に、ビューをもう少し単純化できます。

echo $writer->fullname

だから、私はヘルパーを書く方法を知っていて、これはうまくいきます.クラスを構築することが道であると仮定すると、各オブジェクトをインスタンス化するためのクエリの後、いつが適切な時期ですか? 私はコントローラーで仮定します。さらに、私のクラスはどこにありますか?

4

2 に答える 2

2

別の方法は、Writerモデルに仮想フィールドを作成することです。

public $virtualFields = array(
    'full_name'=>"CONCAT(Writer.first_name, ' ', Writer.last_name)"
);

そしてそれを出力します:

echo h($writer['Writer']['full_name']);
于 2012-08-20T14:56:49.980 に答える
0

にヘルパー CustomHelper (好きなもの) を作成しますView/Helper/。次に、メソッド fullName:

 public function fullName($writer) {
    return $writer['first_name'] . ' ' . $writer['last_name'];
 }

// in your view
echo h($this->Custom->fullName($writer['Writer']));

find() で既にフォーマットする動作を作成することもできます。どこで使用するかによって異なります。ビュー関連のみの場合は、ヘルパーで十分です。コントローラー/モデル レベルで必要な場合は、モデル レイヤーを使用して連結することをお勧めします。

于 2012-08-19T23:37:49.397 に答える