0

通常のビュースクリプトの代わりにモバイルビューを表示したい。

たとえば、このアクション/ my_module / my_controller/my_actionを見てみましょう。

私がそれを呼ぶとき、いくつかのヘッダー処理に基づいて、私はユーザーエージェントがモバイルデバイスであることを知っています。次に、メインレイアウトをモバイル固有のレイアウトに設定しました。私はこのようにそれを行い、それはうまくいきます:Zend_Layout::getMvcInstance()->setLayout('mobile');

しかし、私のコントローラーまたは他の場所で、のようなデフォルトのビューファイルをオーバーライドしたいと思いmy_action.phtmlますmy_action_mobile.phtml

私の見解のいくつかでは、アクションヘルパーを次のように使用していることを考慮して、それをどのように行うことができますか:<?php echo $this->action("index", "index", "items")?>または私のアクションの一部は次のような_forwardを持っています:$this->_forward("index", "auth", "default");

setViewSuffix('mobile')my_action.mobile.phtml、またはmy_action.mobile.phtmlなどのファイルを使用して、いくつかのファイル名のバリエーションを試してみましsetViewSuffix('mobile.phtml')たが、ページが空白になりました。エラーはなく、何もありません。(スローされたエラーを表示するように設定されているため、理由はわかりません)

また、contextSwitchingを試しましたが、メインレイアウトが無効になり(これは必要ありません)、アクションビューヘルパーが適切に処理されないように感じます。(別のビューでレンダリングされたビュー)

どんなサジェクションでもよろしくお願いします。ありがとうございました!

4

2 に答える 2

2

これを使用して、コントローラーからのビューを変更できます
$this->render('actionName')

$this->renderScript('path/to/viewscript.phtml')または、 ; を呼び出してビュースクリプトを直接呼び出すこともできます 。

ここから、render()メソッドとrenderScript()メソッドの詳細を取得できます。$this->renderScriptを使用するときにビューに値を割り当てる
このSO投稿も確認してください

于 2012-12-09T12:44:10.997 に答える
2

このテーマについては非常に多くの情報があります。初心者の方は、 http: //static.zend.com/topics/Mobile-web-app-with-ZF.pdfをご覧ください。

一言で言えば、ContextSwitchを使用する必要があります。

  1. Zend_Http_UserAgentから派生した利用可能なコンテキストとフォーマットパラメータを定義するプラグインを作成します。
  2. コントローラでは、これらのコンテキストに適したアクションを記述します。
  3. それらのアクションに対して異なるビューを作成します。
于 2012-12-09T14:03:47.410 に答える