2012-04-11 7 views
0

PHPのMVCデザインパターンに関する質問があります。メソッドのない引数を渡すPHP MVC

Stack Overflowの質問にアクセスするとURLは「stackoverflow.com/questions/[id」になり、「Ask Question」に行くとURLは「stackoverflow.com/questions/ask」になります。

これは一般に、「質問」という名前のコントローラが読み込まれていることを意味します。「質問」は、コントローラが質問をするためにフォームを表示するように指示するメソッドです。しかし、あなたが質問をするとき、方法はありません、そうですか?代わりに質問のIDがあります。それはどのように機能するのですか?ページは最初に番号であるかどうかをチェックし、番号であれば質問コントローラのインデックスメソッドをロードし、そのIDをパラメータとして渡しますか?それが数字でないなら、それは方法として扱われますか?

ありがとうございました!

答えて

0

あなたが質問に訪れたとき、あなたは「ビュー」として行動することができますが、一般的には「インデックス」アクションを使用することをお勧めします。指定されたアクションのない「質問」コントローラーへの要求はすべてそこにルーティングされます。

+0

私はこの質問(http://stackoverflow.com/questions/10106279)にアクセスすると、そのサイトが質問コントローラの中で10106279というメソッドを実行しようとしているのではないのですか? –

+0

そうです、MVCスタックには通常、ルーティングルールがあります。 URLの最後のセクションにIDとしてフラグを付けることができます。任意のルーティングロジックを適用することができます。ルート "/ beans"をコントローラ "johnny"に、アクション "rogers"に移動させることができます。 –

+0

いつかあなたは何かをするモデルを持っていますが、ホームページからもそれを望んでいますので、あなたのホームページはサブページからモデルを呼び出します。天気予報のコントローラーを使ってどこからでもロードできます。それはリダイレクションだけど、私が言うデザインパスに従っている。 –

0

彼らはただ、それが質問のUIのを呼び出す「尋ねる」であれば、彼らは彼らの見解のように

、などにルーティングされます条件文を使用して、questions_controllerにURLを解析します。

IDであるときは、質問のUIを読み込んで答えます。

+0

それは番号であるかどうかをチェックする必要がありますか?それ以外の場合は、それがメソッドかIDかを知ることはできません。 –

+0

@piers私は彼らがどのようにそれを使用しているのか知りません。しかし、私のコントローラを使ってこのようにルーティングしています。 –

+1

これは私がやっているやり方です...私のコントローラ内の私のinit関数は、整数であるかどうかにかかわらず、必要に応じてルーティングします。MVCは簡単です。コントローラーにページを渡して、パラメーター、モデル、ビュー、アクションなどで必要なことをします。 –

関連する問題