kunitsuji
tsuji****@m-s*****
2009年 11月 18日 (水) 15:53:05 JST
kunitsujiです。 Kenjiさん お恥ずかしい限りです。orz CI_Form_validation($rules = array()) コンストラクタ、こうなんですね。。。 実はラッパーのクラスを作ってまして、そちらで parent::__construct(); としてしまっておりました。 parent::__construct($rules); ですね。。 マッチボックス、HMVCに関しては階層がかわるので、そのあたり調整したらいけ そうです。 ありがとうございます。 >Kenji です。 > > >On Tue, 17 Nov 2009 15:59:41 +0900 >kunitsuji <tsuji****@m-s*****> wrote: > >> kunitsujiです。 >> >> ちょっとわかるかたいますでしょうか? >> >> ルールグループがコントローラー/メソッドの名前に一致する名前のとき、run()メ >> ソッドが呼び出された時に自動的に使用されます。 >> >> ということですが、 >> runメソッドでは次のようなコードです。 >> >> >> /** >> * Run the Validator >> * >> * This function does all the work. >> * >> * @access public >> * @return bool >> */ >> function run($group = '') >> { >> // Do we even have any data to process? Mm? >> if (count($_POST) == 0) >> { >> return FALSE; >> } >> >> // Does the _field_data array containing the validation rules >> exist? >> // If not, we look to see if they were assigned via a config >> file >> if (count($this->_field_data) == 0) >> { >> // No validation rules? We're done... >> if (count($this->_config_rules) == 0) >> { >> return FALSE; >> } >> >> // Is there a validation rule for the particular URI >> being accessed? >> $uri = ($group == '') ? trim($this->CI->uri-> >> ruri_string(), '/') : $group; >> >> if ($uri != '' AND isset($this->_config_rules[$uri])) >> { >> $this->set_rules($this->_config_rules[$uri]); >> } >> else >> { >> $this->set_rules($this->_config_rules); >> } >> >> 仕様では、runメソッドを呼び出したときに、メソッド名とForm_Validationの設定 >> ファイル、コンフィグのGROUPが同じであれば、 >> 自動的に呼び出されます、ということですが、、、 >> >> どう考えても正常に動きません。 >> 上のソースをみてもらえればわかりますが、 >> そもそも最初に >> $this->_config_rulesが設定されていなければRETURNされます。 >> >> で、その下でGROUPがない場合、URIからGROUPを割り出して、設定しているように見 >> えます。 >> つまり、そもそも$this->_config_rulesがない時点で動きません。 >> また、コンストラクタの中では、 >> $this->_config_rules = $rules; >> とだけしています。 > >config/form_validation.php があれば、ライブラリの初期化時に読み込まれ >設定されます。 > >config/form_validation.php を用意してルールグループ名をmember/signup >とし、memberコントローラを作成し、 > > public function signup() > { > $this->form_validation->run(); > } > >とだけしてみました。 > >Form_validationクラスの runメソッドが実行されるとき、$this->_config_rules >には、設定ファイルで定義した配列が、ちゃんとセットされていました。 > > >> ドキュメントにある、form_validation.phpというファイルをconfig/に保存してお >> けば自動で読み込まれるというのは、バグでしょうか? > >動くと思います。 > > >> それとも自分の使い方がおかしいということですかね?? >> set_rule()を行わないといけないということでしょうか。。 > >set_rules() は不要です。run()メソッド内で自動で行われますから。 > >どこで動かなくなってますか? > >設定ファイルが読み込まれてなく、$this->_config_rules がセット >されていないなら、matchbox の影響でしょうかね? > >設定ファイルの読み込みは、Loaderクラスの _ci_init_class()メソッドで >行われます。 > > >// Kenji > > >> ファイルに分けてと思ってところ、設定ファイルを外部に保存できる、というドキ >> ュメントを見てこれであればコントローラの中の記述が >> 楽になるなぁト思ってたのですが。。 >> >> 分かる方教えてください。m(_ _)m >> >> _______________________________________________ >> Codeigniter-users mailing list >> Codei****@lists***** >> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users > >_______________________________________________ >Codeigniter-users mailing list >Codei****@lists***** >http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users