У меня проблема, все работало, но затем я попытался поместить свои функции в свои собственные библиотеки (чтобы использовать их в разных контроллерах), и это не работает.
У меня есть контроллер SIGNUP с этим:
$this->load->library('Check_functions');
// We check the form
$return_verif_form_signup = $this->check_functions->verif_form_signup($language);
, который вызывает мою библиотеку Check_functions:
class Check_functions {
public function verif_form_signup($language) {
if ($this->input->post()){
// Verification rules
$this->form_validation->set_rules('name', 'lang:name', 'trim|required|xss_clean');
....
if ($this->form_validation->run($this)) {
extract($_POST);
...
...
}
Но я получаю ошибку: Неустранимая ошибка: вызов функции-члена post () для необъекта
Кто-нибудь знает, как я мог это исправить?
спасибо!
РЕДАКТИРОВАТЬ:
Я обнаружил проблему, функция обратного вызоване называется.Если я заменю callback_free_email
на REQUIRED и не введу электронное письмо, моя форма не будет отправлена, так что все в порядке.Но если у меня есть следующий код, моя форма всегда отправляется.Поэтому функция обратного вызова никогда не вызывается ...
Это мой код (я использую HMVC ):
class Check_functions {
private $CI;
public function __construct(){
$this->CI =& get_instance();
}
public function verif_form_signup($language) {
if ($this->CI->input->post()){
$this->CI->form_validation->set_rules('name', 'lang:field_name', 'trim|required|min_length[3]|max_length[25]|xss_clean');
$this->CI->form_validation->set_rules('email_signup', 'lang:field_email', 'callback_free_email');
...//other rules
if ($this->CI->form_validation->run($this->CI)) {
.....
}
}
}
public function free_email($str) {
return FALSE; // I have temporarly set that so I see if my function is called
}
}
У меня есть файл с именем MY_Form_validation.php как предложено здесь: http://codeigniter.com/forums/viewthread/143057/#769347
class MY_Form_validation extends CI_Form_validation{
function run($module = '', $group = ''){
(is_object($module)) AND $this->CI = &$module;
return parent::run($group);
}
}
Я действительно не знаю, что не так ... почему моя функция обратного вызова не вызывается?
Спасибоза вашу помощь!