2011-04-01 6 views
2

リクエストがAJAXであるかどうかに基づいて、CakePHPに異なるコンポーネント/ヘルパーを読み込ませることはできますか?要求がAJAXでない場合にのみ、CakePHPコンポーネントをインクルードしますか?

明らかに、RequestHandler自体はコンポーネントなので、RequestHandler :: isAjaxを使用することはできません!

私の懸念はパフォーマンスです - 私はすべてのコンポーネントをローディングすると思っています(私はほとんどのコントローラで約4-6を持っています)がスピードを上げるでしょうか?

私はAjaxControllerを最小限のコンポーネントとヘルパーなしで作成することを考えましたが、これはちょっと汚いようですね。

ありがとうございました

答えて

1

私はあなたがデフォルトでRequestHandlerComponentを使用し、必要であれば、それは他のコンポーネントをロードしてみましょうお勧めします。 RHコンポーネントだけを読み込んでもシステムには影響しません。いずれにせよ、このようなものをすぐにミクロ最適化しようとするべきではありません。

JSのセットアップの種類によっては、ほとんどのJSライブラリでXMLHttpRequestの値を持つX-Requested-Withが送信されます。あなたはそれを探すこともできます。

個人的には、私はRequestHandlerComponentが最良のアプローチだと思います。

+0

ありがとう、あなたのアドバイスでは、私はRequestHandlerComponentとヘルパーは含まれていません。 AppController :: beforeFilterでは、要求のタイプをチェックし、それがajaxでない場合は、必要なコンポーネントとヘルパーをロードします。 – Will

関連する問題