0

これらのビューのセットのいずれかをレンダリングしたい:

  1. 本体-$id1

また

  1. 本体-$id2

どのセットが存在します。

私はこのようにします:

try {
    $this->render("head");
    $this->render("body-$id1");
    $this->render("foot");
} catch (Exception $e) {
    $this->render("head");
    $this->render("body-$id2");
    $this->render("foot");  
}

headbody-$id1 が存在しない場合、ビューが 2 回レンダリングされます。

より良い解決策はありますか?

別の言い方をすれば、body-$id1レンダリングする前に の存在を確認してもよろしいですか?

4

1 に答える 1

1

「try」ブロックで有効なスクリプトを実行しますが、失敗した場合は「catch」ブロックですべてのコンテンツをレンダリングします。したがって、おそらく次のようなものが必要になります。

$this->render("head");
try {
    $this->render("body-$id1");
} catch (Exception $e) {
    $this->render("body-$id2");
}
$this->render("foot");

ビューが存在するかどうかを確認する API メソッドは表示されませんが、ビュー スクリプトへのパスを取得し、そのパスにfile_exists「body-{$id1}」が存在するかどうかを確認するために使用するコントローラー ヘルパーを作成できます。

于 2010-03-13T18:10:11.540 に答える