yii プログラムの開始プロセスとページのレンダリング方法についてはすでに見てきました。私たちが今日分析したいのは、Yii がユーザーのリクエストをどのように処理するかということです。それがコントロールとアクションの部分です。
このプロセスを説明するために helloworld を例に挙げてみましょう。アドレスバーに http://localhost/study/yii/demos/helloworld/index.php と入力すると、ページに hello world が表示されます。
前の分析ではデフォルト値を使用しましたが、URL にパラメータがある場合、Yii はそれをどのように処理しますか?この質問を念頭に置いて、詳しく分析してみましょう。
CWebApplication には次のコード行があります:
リーリーこれは伝説のルートです、ちょっとゼリーじゃないですか?まずは getUrlManager がどれほど素晴らしいかを見てみましょう。
リーリーこれには再び関係を見つける必要があります。
リーリーreturn $this->_components[$id]; を実行します。ID は渡された urlManager です。実際、ここからは urlManager クラスを直接見つけて parseUrl を確認するだけです。 リーリー
上記のコードから判断すると、URL に何かをアップロードしない場合は、「」を返すだけで済みます。そこで、パラメータをどのように渡すかという疑問が生じます。リーリー リーリー
解決策はあります。一緒に害を与えましょう。 helloworld/index.php?r=abcのようなパラメータを追加します
エラーが見つかりました。それは、abc コントローラーが存在しないことを意味します。それは、ことわざにあるように、男が悪くなければ、女は彼を愛さないでしょう。
helloworld/index.php?r=site に変更すると、hello world が表示されます。これは一体何でしょうか。理由は非常に簡単で、サイトコントローラーが定義されているからです。
リーリー
わかりました、これに異論はありませんが、actionIndex とは一体何ですか? Yii では、これをアクションと呼びます。 ?r=site/index と入力すると、アクションが「/」で区切られ、コントローラーの背後にあるパラメーターがキャプチャされます。表示するアクションをデバイスに追加します:リーリー
?r=site/view にアクセスすると、「Hello View」という出力が表示されましたか?それは間違いなく真実です。私はあまり本を読んでいませんが、写真と真実があります。私はサイトという名前を使用するのはまったく好きではありません。テストが私のお気に入りなので、それを試すために別のテスト コントローラーを構築しました。
鋭い目を持つ人は、アクションの書き方を見たはずです。これは一体何ですか?やってみて初めて、実は別の表現方法だということが分かりました。
ブログの例で確認コードを表示するために使用したことを覚えています:
リーリーこのコントローラーのアクションは依然としてアクション + ID の形式で単純であるため、サードパーティのビジネスを一元的に宣言するアクションのコレクションとして理解しています。
一体何?これは、設定ファイルから始める必要があります。
リーリーurlFormat には path と get の 2 種類があります。main.php で指定されていない場合は、index.php?r=site/captcha の get メソッドになります。指定するとindex.php/site/captcha
のような感じになりますpath はパスの形式であり、get は ? の形式であることも理解しやすいです。
ルーティングとコントローラーの部分についてはさらに説明すべきことがたくさんありますが、このセクションではこれで終わりです。
http://www.bkjia.com/PHPjc/930706.html