2015-02-14 3 views
0

я следующий контроллер для отображения формы регистрации (первой странице)Codeigniter: получить переменную из другого контроллера

public function index() 
{ 
    $data['form_type']='dologin'; 
    $data['username_label']='Username'; 
    $data['password_label']='Password'; 
    $data['username_name']='usernamenya';//name of the textbox username 
    $data['password_name']='passwordnya';//name of the textbox password 
    $data['username_value']=''; 
    $data['password_value']=''; 
    $data['fieldset_text']='Silahkan Login';   
    $data['fieldset_close_text'] = '</div></div>'; 
    $data['form_close_text']='</div></div>'; 
    $data['clear_name']='Hapus'; 
    $data['submit_name']='Login'; 

    $this->load->helper('form'); 
    $this->load->view('header'); 
    $this->load->view('content_login',$data); 
    $this->load->view('footer');   
} 

после нажатия кнопки, она будет перенаправлять на dologin контроллер, я создал index функция на dologin контроллер

class dologin extends CI_Controller { 

public function index() 
{ 
    $this->load->library('form_validation'); 
    $this->form_validation->set_rules('','',''); 

    if ($this->form_validation->run() == FALSE) 
    { 
     $this->load->view('myform'); 
    } 
    else 
    { 
     $this->load->view('formsuccess'); 
    } 
} 
     } 

в form_validation_rules, которые требуют имя управления, я хочу, чтобы получить его от другого контроллера, поэтому, если мы изменим имя index контроллера, dologin контроллер не сломается и продолжит процесс

как это сделать? или есть альтернативный способ сделать мою идею?

+0

Я не понимаю. Как вы узнаете, какое правило проверки необходимо применять, если поля отправляются динамически? – AdrienXL

+0

@AdrienXL Вот почему я хочу вызвать 'usernamenya' и' passwordnya' из 'index' контроллера, поэтому, если в другое время мы изменим' usernamenya' на 'stack_usernamenya', это не будет проблемой. , , – Cignitor

+0

Вы можете добавить скрытый ввод в свою форму, который содержит 'serialize ($ data)', и когда вы отправляете свою форму на контроллер 'dologin', вы можете ее неэтериализовать. но лучше всего создать «config/form.php», который содержит вашу форму. –

ответ

0

Я не уверен, что я полностью понял вашу проблему, но вот как я бы делать такие вещи:


Допустим, у нас есть основная форма HTML для входа в систему, в которой мы просим для электронной почты и пароль:

<form method="post" action="<?php echo site_url("myController/login"); ?>"> 
    <input type="text" name="login_mail" required> 
    <input type="password" name="login_pass" required> 
    <button type="submit">Login</button>     
</form> 

Как вы можете видеть, заполнив форму будет вызывать функцию login() в контроллере myController, как это определено в атрибуте action.

Давайте посмотрим, что login() функция:

class MyController extends CI_Controller 
{ 
    public function login() 
    { 
     $this->load->library('form_validation'); 

     //Here we set the validation rules for our two fields. We must use the same names as defined in out html for the `name` attribute. 
     $this->form_validation->set_rules('login_mail', 'Email', 'trim|required|valid_email|xss_clean'); 
     $this->form_validation->set_rules('login_pass', 'Password', 'trim|required|xss_clean'); 

     if ($this->form_validation->run()) //Success 
     { 
      //Get the submited values 
      $email = $this->input->post("login_mail"); 
      $password = $this->input->post("login_pass"); 

      //Your stuff here 

      $this->load->view('formsuccess');    
     } 
     else 
     { 
      $this->load->view('myform'); 
     } 
    } 
}