私が開発中の ZF2 プロジェクトでecho $this->content;
は、メイン コンテンツ領域の条件付き書式設定を許可する、layout.phtml のステートメントの周囲にシェルを作成したいと考えています。具体的には、コンテンツを 75% 幅の列に配置し、ほとんどのページで 25% 幅の列に「装飾」要素をいくつか含めたいと考えています。ただし、より多くのスペースが必要なページは 1 列に変更したいと考えています。私のプロジェクトは CMS で、各ページには属性があり、ビューまたはコントローラーにページが通常か幅かを伝えることができます。私は自分が求めているものを達成するための多くの方法を検討しました。
私の「レイアウト ビューでの条件付き書式」は次のようになります。
// module/Application/view/layout/layout.phtml:
//...
if ($templateNormal) {
echo "<div class='col-md-9'>";
} else {
echo "<div class='col-md-12'>";
}
echo $this->content;
if ($templateNormal) {
echo "</div>";
echo "<div class='col-md-3'>";
//... ornamentation
echo "</div>";
} else {
echo "</div>";
}
//...
上記の方法は機能する可能性がありますが、純粋な MVC の場合、レイアウト ビューで意思決定を行う必要はないと思います。
私の「部分ビューでの条件付き書式」は次のようになります。
// module/Application/view/layout/layout.phtml:
//...
echo $this->partial('partial/open-shell.phtml');
echo $this->content;
echo $this->partial('partial/close-shell.phtml');
//...
// module/Application/view/partial/open-shell.phtml:
if ($templateNormal) {
echo "<div class='col-md-9'>";
} else {
echo "<div class='col-md-12'>";
}
// module/Application/view/partial/close-shell.phtml:
if ($templateNormal) {
echo "</div>";
echo "<div class='col-md-3'>";
//... ornamentation
echo "</div>";
} else {
echo "</div>";
}
ここでは、意思決定はレイアウト ビューから取り出されますが、単純に他のビューに配置されるため、まだビュー パッケージにあり、純粋な MVC ではありません。
私の「コントローラーでの条件付き書式設定」ソリューションでは、一対の html スクリプト文字列がコントローラー関数で作成され、ビューに渡されます。次のようになります。
// module/Application/view/layout/layout.phtml:
//...
echo $this->open-shell-script';
echo $this->content;
echo $this->close-shell-script';
//...
// some controller function:
//...
if ($templateNormal) {
$open-shell-script = "<div class='col-md-9'>";
$close-shell-script = "</div>";
$close-shell-script = "<div class='col-md-3'>";
$close-shell-script .= //... ornamentation
$close-shell-script .= "</div>";
} else {
$open-shell-script = "<div class='col-md-12'>";
$close-shell-script = "</div>";
}
//...
このメソッドでは、意思決定はコントローラーで行われるべきだと思いますが、そこにhtmlを書いているのは奇妙に思えます。
コメントや提案はありますか?