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