我使用config.php来存储所有的form_validation规则…但我想存储回调函数在一个单一的文件,我怎么能这样做?什么好主意吗?谢谢你…
现在我的文件是这样的:
User_controller在用户控制器下有许多自定义的callback_valid,但我准备移动config.php中的所有规则。我想把_valid回调到一个类。谢谢你!
默认情况下,Form_validation库使用它的$CI
属性来查看回调方法是否存在。通常它会查看当前控制器。但是,您可以通过扩展验证类和修改run()
方法来改变这种行为。
class MY_Form_validation extends CI_Form_validation {
/**
* Support for validation callbacks from any object
*
* @access public
* @param object The object to run callbacks from
* @param string Is there a validation rule for the particular URI being accessed?
* @return bool Validation status
*/
function run($obj = '', $group = '')
{
// Assign the callback object
if (is_object($obj)) $this->CI =& $obj;
// Run the validation as normal
return parent::run($group);
}
}
我们只是重新赋值了$CI
属性。因此,要使用来自user_validation
类的回调,例如,您可以这样做:
$callback_class = $this->user_validation;
if ($this->form_validation->run($callback_class)) {}
任何加载的类都可以工作,因此您可以将回调规则存储在模型或库中,只需将您想要处理回调的对象传递给run()
方法。
在这种情况下,我要做的只是创建一个MY_Form_validation类来扩展CodeIgniter的表单验证。将"_valid"检查放在新创建的MY_Form_Validation文件中,并为"_valid"检查设置规则,就像您为默认的form_validation规则所做的一样。
之类的…
class MY_Form_validation extends CI_Form_validation {
function valid_user($str)
{
}
function valid_password($str)
{
}
}