1

これは私の Zend Framework ディレクトリ構造です (必要なものだけが含まれています)。

-Controllers
    -HomeController.php
    -IndexController.php
-Views
    -scripts
        -home
            -index.phtml
        -index
            -index.phtml

で、IndexControllerそれらを自動的にホーム ビューにリダイレクトしたいと考えています。

どうすればこれを達成できますか?

これは私がこれまでに試したことです:

header('/application/views/home');

別のビューとコントローラーに完全にリダイレクトしたい。同じコントローラー内の別のアクションではありません。

4

2 に答える 2

2

いくつかのオプションがあります:

_redirect アクションユーティリティ メソッドを使用する(非常に一般的)

public function indexAction() {
    $this->_redirect('/application/views/home');
}

または、_forward アクションユーティリティ メソッドを使用して、実際にリダイレクトせずに要求されたアクションを実行するだけです。

public function indexAction() {
        $this->_forward('index', 'home');
    }

_redirectにていますが、さらに多くのオプションがあります。

public function indexAction() {
            $this->getHelper('Redirector')->gotoSimple('index','home');
        }

これは、コントローラー内のリダイレクトの基本をカバーしています。実際にレンダリングhome/index.phtmlしたい場合は、 viewrenderer アクションヘルパー/idex/indexを使用できます。

それらの秘密を解き放ちましょう。

于 2012-08-12T11:22:50.707 に答える
1

現在のアクション内で別のアクションをレンダリングする場合は、アクション内で次の方法で実行できます。

$this->render('actionName');

または、レンダリングするテンプレートを明示的に設定します

$this->renderScript('path/to/viewscript.phtml');

更新:あなたの質問をもう一度読んで、あなたが使いたいと思う

_forward($action, $controller = null, $module = null, array $params = null):別のアクションを実行します。preDispatch() で呼び出された場合、現在要求されているアクションはスキップされ、新しいアクションが優先されます。それ以外の場合、現在のアクションが処理された後、_forward() で要求されたアクションが実行されます。

また

_redirect($url, array $options = array()):別の場所にリダイレクトします。このメソッドは、URL とオプションのオプション セットを受け取ります。デフォルトでは、HTTP 302 リダイレクトを実行します。

この質問に関するドキュメントを参照してください。

于 2012-08-12T11:11:55.650 に答える