新しいコントローラーを追加するにはどうすればよいですか?
Lib/Action に新しいコントローラーを追加します: ProductAction.class.php:
クラス ProductAction は Action{
を拡張します
パブリック関数index(){
echo '製品モジュール、インデックスメソッド';
}
}
次に、URL 経由でアクセスします: これにより、非常に重要な概念が導入されます:
URL スケジューリング モード: Web サイトにアクセスするときに使用するさまざまな UR アクセス方法です
tp は 4 つのアクセス方法をサポートしています。これらは URL_MODEL パラメータを通じて制御できます。
1. 通常の模擬テスト: デフォルトでサポートされています
www.tp.com/index.php?m=Product&a=index&id=1
mモジュール名
アクション
2.pathinfo モジュール (tp のデフォルトのスケジューリング モード):
http://www.tp.com/index.php/Product/index/id/1/name/zhangsan
製品モジュール名
インデックスメソッド名
idはパラメータです
1 は値です。 。 。 。 。 通常、次のパラメータはペアで表示されます。 /で区切ってください。
3. リライトモード、つまり書き換え。 ページの静的化で使用されます
エントリファイルは省略できます:
http://www.tp.com/Product/index/id/1/name/zhangsan
設定方法:
1. mod_rewrite.so モジュールが httpd.conf 設定ファイルにロードされます
2.AllowOverride None を None から All に変更します (#Options Indexes と同時に表示できないことに注意してください。そうしないと、アクセス権限がありません)
3. URL_MODEL が 2 に設定されていることを確認します
4. 以下の内容を .htaccess ファイルとして保存し、エントリーファイルと同じディレクトリに置きます
リライトエンジンオン
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$index.php/$1 [QSA,PT,L]
4.互換モード:
Web サーバーが pathinfo または rewrite モードをサポートしていないが、それでも使用したい場合は、互換モードの使用を検討できます
http://www.tp.com/index.php?s=Product/index/id/1/name/zhangsan
または: http://www.tp.com/?s=Product/index/id/1/name/zhangsan
設定ファイルでは、URL_MODELの0123がそれぞれ表現されています。デフォルトでサポートされています。何が起こっているのでしょうか? ? ? ?
どのモードでも通常モードがサポートされており、フォームを送信すると違いがわかります。
パス区切り文字: 'URL_PATHINFO_DEPR' => '-', // PATHINFO モードでは、各パラメータ間の区切り記号
http://www.tp.com/?s=Product-index-id-1-name-zhangsan
コントローラーの空気制御?このようにして、URL を簡素化し、その特性の 1 つを活用することができます。
システムは指定されたメソッドまたは実行メソッドを見つけることができません。
次のメソッドをコントローラーに追加します:
/*
※$nameはリクエストメソッドを表します
*/
パブリック関数 _empty($name){
echo '要求されたページを表示できません'.$name;
}
5. 空のモジュール
空のモジュールの概念は、システムが指定されたモジュール名を見つけられない場合、システムが空のモジュール (EmptyAction) を見つけようとすることを意味し、このメカニズムを使用してエラー ページをカスタマイズし、URL を最適化できます。
l 空のアクション
MODULE_NAME
URL をリクエストしてみます
http://localhost/tp/index.php/Student/shanghai
システムには StudentAction コントローラーがないため、エラーが報告されます
将来、システムが対応するモジュールを見つけられない場合、このクラスに _empty という別のメソッドを追加すると、この方法ですべてをブロックできます。 URL からのエラー
5. プロジェクトのグループ化
大規模プロジェクトでは、多くの場合、大規模なプロジェクトは複数の小規模なプロジェクトで構成されます。例:
が原因である可能性があります。フロントエンド プロジェクト、バックエンド プロジェクト、メンバー ブログ、フォーラム
l config.php
l APP_GROUP_LIST グループリスト
l DEFAULT_GROUP デフォルトのグループ
私たちのプロジェクトで、今すぐグループ化を開始します:
1) フロントデスクプロジェクトホーム
2) バックエンドプロジェクト管理者