kunitsuji
tsuji****@m-s*****
2009年 11月 17日 (火) 15:59:41 JST
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; とだけしています。 ドキュメントにある、form_validation.phpというファイルをconfig/に保存しておけば自動で読み込まれるというのは、バグでしょうか? それとも自分の使い方がおかしいということですかね?? set_rule()を行わないといけないということでしょうか。。 ファイルに分けてと思ってところ、設定ファイルを外部に保存できる、というドキュメントを見てこれであればコントローラの中の記述が 楽になるなぁト思ってたのですが。。 分かる方教えてください。m(_ _)m