Kenji Suzuki
kenji****@gmail*****
2009年 11月 18日 (水) 17:12:07 JST
Kenji です。 On Wed, 18 Nov 2009 15:53:05 +0900 kunitsuji <tsuji****@m-s*****> wrote: > kunitsujiです。 > > Kenjiさん > お恥ずかしい限りです。orz > > CI_Form_validation($rules = array()) > コンストラクタ、こうなんですね。。。 > > 実はラッパーのクラスを作ってまして、そちらで > parent::__construct(); > としてしまっておりました。 > parent::__construct($rules); > ですね。。 なるほど! これは、ちょっとハマりそうな点ですね。 // Kenji > マッチボックス、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 > > _______________________________________________ > Codeigniter-users mailing list > Codei****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users