質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Zend Framework

Zend Frameworkは、PHP5で記述されたWebアプリケーションフレームワークです。Zend Frameworkには守らなければならない開発の規定というものは存在せず、MVCなどの複数のコンポーネントを提供しています。

Q&A

解決済

1回答

11314閲覧

zendのrender、redirect、forwardについて

lupus_dingo

総合スコア257

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Zend Framework

Zend Frameworkは、PHP5で記述されたWebアプリケーションフレームワークです。Zend Frameworkには守らなければならない開発の規定というものは存在せず、MVCなどの複数のコンポーネントを提供しています。

0グッド

0クリップ

投稿2015/09/17 14:24

編集2015/09/17 14:29

最近zendを触り始めたのですが以下の認識で合ってるか教えてください。

render:アクションをスキップし、viewの表示のみ行う。アクションを作るまでもない固定のHTMLなどに使う。
forward:指定したアクションを実行するがurlはforward前のままになる。assignでviewに値を渡せる。値を渡したい時は必然的にこれを使うことになる。
redirect:引数で指定したurlのアクションが実行される。ブラウザで直接urlを指定するイメージ。viewに値を渡すことはできない。値を渡す必要がなくかつurlを変えたいときに使う。

自分のイメージだとこんな感じなんですが合ってるでしょうか?
それから、forward()と_forward()の違いってなんでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

render

ViewRenderer による自動レンダリングが無効だと、アクションの中で呼ぶとビューが表示されます。

ViewRenderer による自動レンダリングが有効だと、自動的で表示されるビューの名前を指定できます。

普通は ViewRenderer による自動レンダリングが有効なので、アクションの中でレンダリングするビューを変更したい時に使うと思います(デフォルトでは実行されたモジュール名・コントローラー名・アクション名から自動的にビューの名前が決定されます)。

forward

URL は変えずに別のアクションを実行します。サーバ内で完結するものなのでブラウザにはフォワードしていることは伝わりません。

ビューへアサインされた変数はフォワードしても維持されるので、フォワード前に設定したビュー変数をフォワード後のビューで使うことができます。

ただ、フォワード前後で値を受け渡したければ、普通は forward() の引数で渡すと思います。

forward()と_forward()の違いってなんでしょうか?

_forward() は ZF 1.7 からは非奨励で、代わりに forward() を使うと良いです。なお、_redirect()redirect() も同じです。

redirect

いわゆるリダイレクトをします。つまり、ブラウザに 302 などのリダイレクトのためのレスポンスコードを返して、指定した URL にリダイレクトするように指示します。

ブラウザはこれを受け取ったあと、指定された URL に遷移します。

リダイレクト元のアクションからリダイレクト先のアクションに値を渡したければ、Routing のパラメータとして渡すか(Routing の定義による)、クエリストリングで渡す必要があります。要するに URL に含める必要があります。

セッションに入れて受け渡す、という方法でも出来なくはないです。

投稿2015/09/18 02:02

ngyuki

総合スコア4514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lupus_dingo

2015/09/20 03:00

回答ありがとうございます。 アクションの最後でrenderしてないので自動レンダリングは有効になってると思います。 これからは_forwardじゃなくて、forward使うようにします。 forward使うときもassignしてました。引数で渡せるんですね。Routingパラメータ初耳です。 リダイレクトって実はよくわかってなかったので勉強しときます。単純な画面遷移じゃないんですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問