thinkphp URL 内のアクションが定義されていない場合でも、テンプレートにアクセスできますか?
最近 thinkphp フレームワークに触り始めたのですが、同社のソース コードを見たところ、URL 内のアクションに対応する実装メソッドがクラス内にないことがわかりました。
thinkphp には no-ops モジュールと空のモジュールがありますが、私は当初それらが no-ops によって実装されていると考えていました。
最終的な確認結果: アクションに対応するテンプレートが、モジュールをまったく経由せずに直接表示されます。
thinkphp にアクセスしたばかりですが、理由がわかりません。助けてください。
ルーティング機能が設定で有効になっているかどうかを確認してください。これが現在発生している問題であるかどうかはわかりません。
ルーティング機能が設定で有効になっているかどうかを確認してください。これが現在発生している問題であるかどうかはわかりません。
ルーティングルールもありません。インターネットで調べたところ、テンプレートが静的であればアクションをクラスで定義する必要がないという人もいましたが、理由はわかりません
テンプレートが存在しない場合は、テンプレートを直接読み取ります。
ユーザー定義のアクションを入力する前に、メソッドが存在するかどうかを自動的に検出します。メソッドが存在する場合は、テンプレートを直接読み込んで接続してください。
ユーザー定義アクションを入力する前に、メソッドが存在するかどうかを自動的に検出します
存在しない場合は、テンプレートを直接読み取ります テンプレートが存在しない場合は、メソッドが存在しないなどのエラーが報告されます
ユーザー定義のアクションを入力する前に、このメソッドが存在するかどうかが自動的に検出されます
存在しない場合は、テンプレートを直接読み取るだけです。テンプレート そうでない場合は、メソッドが存在しないというエラーが報告されます
ユーザーを入力する前に -定義されたアクションは、メソッドが存在するかどうかを自動的に検出します。存在しない場合は、テンプレートを直接読み取るだけです。
ご説明ありがとうございます。これを説明している公式 thinkphp Web サイトへのリンクを教えてください。
/** * 魔术方法 有不存在的操作的时候执行 * @access public * @param string $method 方法名 * @param array $args 参数 * @return mixed */ public function __call($method,$args) { if( 0 === strcasecmp($method,ACTION_NAME.C('ACTION_SUFFIX'))) { if(method_exists($this,'_empty')) { // 如果定义了_empty操作 则调用 $this->_empty($method,$args); }elseif(file_exists_case($this->view->parseTemplate())){ // 检查是否存在默认模版 如果有直接输出模版 $this->display(); }else{ E(L('_ERROR_ACTION_').':'.ACTION_NAME); } }else{ E(__CLASS__.':'.$method.L('_METHOD_NOT_EXIST_')); return; } }
ThinkPHP/Library/Think/Controller.class.php を参照してください __call メソッド
/** * 魔术方法 有不存在的操作的时候执行 * @access public * @param string $method 方法名 * @param array $args 参数 * @return mixed */ public function __call($method,$args) { if( 0 === strcasecmp($method,ACTION_NAME.C('ACTION_SUFFIX'))) { if(method_exists($this,'_empty')) { // 如果定义了_empty操作 则调用 $this->_empty($method,$args); }elseif(file_exists_case($this->view->parseTemplate())){ // 检查是否存在默认模版 如果有直接输出模版 $this->display(); }else{ E(L('_ERROR_ACTION_').':'.ACTION_NAME); } }else{ E(__CLASS__.':'.$method.L('_METHOD_NOT_EXIST_')); return; } }
モデレーターありがとうございます