0

Zend Frameworkを使い始めたばかりですが、自分が持っている奇妙なクラスをどうしたらいいのでしょうか。すべてをセットアップするためのベストプラクティスについては、かなり疑問に思っています。

レイアウトを有効にしたところ、HTMLのヘッド、ボディ、フッターなどがラッピングされています。

以前のアプリケーションでは、CSSファイルとJSスクリプトのリストを特定の順序で渡すバンドラースクリプトを作成しました。開発モードの場合は、ファイル名をループして、次のように出力します。

foreach ($CSS_Scripts as $file) {
    echo '<link src="' . $file . '" ref="stylesheet" />';
}

foreach ($JS_Scripts as $file) {
    echo '<script type="text/javascript" src="' . $file . '"></script>';
}

開発モードの場合、10個の個別のCSSおよびJSファイルを出力する場合があります。本番環境にある場合は、それらをバンドルするため、CSSファイルとJSファイルは1つだけです。

これはテンプレートの範囲内です...ロジックがどこに行くのかよくわかりません。これはすべてのページに存在する必要があるロジックなので、layout.phtml内にありますが、クラスをどこに配置し、どのように実行するのですか?それらを入れてprojectname/library内部でバンドラーロジックを実行しBootstrap.phpてから、それらをビューに割り当てて内部のビューを呼び出しますlayout.phtmlか?

layout.phtmlまた...私が想定している内部でログアウトしたときに、すべてのページの上部にログインフォームを表示したいとします。フォームを作成しましたApplication_Form_Loginが、ログインを許可するには、Controller?内でアクションを実行する必要があります。Bootstrapすべてのページからログインできるように、またすべてのページで重複しないように、ログインアクションを実行する必要がありloginActionますか?

しかし、さらに柔軟性を提供するZend_Authもありますか?たぶん、これは内部で開始されBootstrap、その後全体で開始されlayout.phtml、ログインしている場合に条件付きで実行できるビューはありますか?

そして、URLにSEOタグが含まれているランディングページの場合...(単なる例)のように、キーワードごとに個別のコントローラー/ビューを作成する場合だと思います...スタックオーバーフロー/コンピューターの質問/デジタル時計/そしてこれらの中のコンテンツViews

ありがとう...すべてが分離されているときの考え方が違うので、私はかなり混乱しています:D私はどこでも完全に制御でき、やりたいことややりたいことをすることに慣れていますが、それはスパゲッティコードにつながります-.-

4

1 に答える 1

2

ここにあなたの質問のいくつかに対するいくつかの答えがあります...

ブートストラップは、アプリケーションとリソースをセットアップするためのものです。ブートストラップにアプリケーション固有のコードは本当に必要ありません。ブートストラップを使用してビューを設定し、プラグインを登録し、そのようなデータベースとリソースが設定されていることを確認します。どうしても必要な場合は、ブートストラップでセッションを初期化することもできます。

バンドルプロセスは、layout.phtmlファイルで実行する必要があります。Zend Frameworkが提供するプレースホルダーヘルパーのいくつかを適切に利用すれば、必要なことを簡単に実現できます。

次に例を示します。このコードはlayout.phtmlファイルにあります。

<?php
$this->headScript()
     ->prependFile($this->baseUrl('js/importantCode.js'), 'text/javascript');

echo $this->headScript();

headScriptヘルパーを使用して、ファイル'js/importantCode.js'をレイアウトに含めるスクリプトのリストに追加します。レイアウトでこれを行うことにより、importantCode.jsファイルが常にページに含まれることが保証されます。ここで、どこでも使用しない追加のJavaScriptを使用する特別なページがあるとします。ビュースクリプトでは、次のようにするだけです。

<?php
$this->headScript()->appendFile($this->baseUrl('js/calendar.js'))
                   ->appendFile($this->baseUrl('js/tooltips.js'));
?>

これにより、タグにさらに2つのJavaScriptファイルが追加されますが、これはこの特定のビューに対してのみです。このロジックを多くのページで繰り返す場合は、プラグインまたはビューヘルパーを使用して、これらのファイルをビューに簡単に追加できる可能性がありますが、重要なのは、ブートストラップを使用する必要がないことです。CSSやインラインスタイルを含めるための同様のヘルパーが存在します。

独自のカスタムクラスを配置する一般的な場所は、library/Myフォルダーです。次に、クラスとディレクトリのZend構造に従い、クラスにMy_Custom_Class(library / My / Custom / Class.php)のような名前を付けて、必要に応じて自動ロードできます。

Zendアプリケーションコードのいずれかから簡単に言う$obj = new My_Custom_Class()と、Zendはそのクラスをlibrary / My / Custom / Class.phpから自動ロードするため、どこにでも含めたり、要求したりする必要はありません。必要なときにだけインスタンス化することで、不要なときに常に含める必要がなくなります。

ログインプロセスでは、ログインを処理するための単一のアクションを作成します。専用のコントローラー内にある場合もあれば、ログインプロセスを含めるための適切なコントローラー(たとえば、IndexControllerなど)を見つける場合もあります。ビューパーシャルを使用して、ログインフォームを表示するためのレイアウトに含めることができます。これは、ログインを処理するためのログインアクションを常に指し、非表示の値を使用して、ユーザーをコントローラーとユーザーがログインしたアクションにリダイレクトすることができます。ご希望の場合。

SEO URLに関しては、カスタムルートが状況に役立つ場合があります。または、URLを構造化するだけで、ほとんどのSEOがURLパラメーターになります。URLを取得しますhttp://yoursite.com/product/view/category/Digital-Clocks/cid/1234。製品はコントローラー、ビューはアクション、paramカテゴリはDigital-Clocks、cid(カテゴリID)は1234です。カスタムルートを使用すると、より短く、より使いやすいURLを実現できます。

それがいくつかの助けになることを願っています。

于 2011-10-20T17:40:51.183 に答える