2013-06-13 2 views
0

Если у меня есть функция обратного вызова в пределах MY_Controller, который обрабатывает форму:Codeigniter ссылка MY_Controller в виде помощника

class MY_Controller extends CI_Controller{ 

    function login(){ 
     $this->form_validation->set_rules('username', 'Username', 'required'); 
     $this->form_validation->set_rules('password', 'Password', 'required'); 

     if ($this->form_validation->run() == true){ 
      //do something 
     } 
    } 

} 

Как я должен идти о ссылаться на него с формой помощника на мой взгляд?

echo form_open('?/login'); 

Смысл этого в том, что у нас есть форма входа в шаблоне заголовка, который не имеет соответствующий контроллер, он загружается перед каждым видом. Мы скрываем форму входа в систему с помощью JS, если установлены данные сеанса, поэтому наиболее логично разместить обратный вызов в MY_Controller, я просто не знаю, как получить к нему доступ с помощью класса-помощника формы. Какие-либо предложения?

+0

'Form_Open ('MY_Controller/входе в системе');' – Dale

+0

что ваш ' default_controller' name ?? –

ответ

2

Поскольку вы размещаете login() внутри MY_Controller и расширения CI_Controller, каждые усиления регулятора это способ. Затем вы можете использовать $this->router->fetch_class();, чтобы получить имя текущего контроллера и добавить его до /login.

Ex.

var $controller = $this->router->fetch_class(); 
echo form_open($controller.'/login'); 
+0

Очень приятно, мне это нравится, так как использование MY_Controller - это не хороший успокаивающий дизайн uri, если не сказать больше. Таким образом, функция входа в систему всегда находится в контексте, буквально. – Dan

0

Добавить два Library-

$this->load->helper('form'); 
$this->load->library('form_validation'); 

в конструкторе контроллера и добавить

echo form_open('MY_Controller/login'); 

ввиду

0

Вы можете получить доступ к login() функции MY_Controller как

form_open('default_controller_name/login'); 

если нет login() функции в вашем default_controller

Смежные вопросы