[Codeigniter-users] これは正常に動くのでしょうか?Form_validation

Back to archive index

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




Codeigniter-users メーリングリストの案内
Back to archive index