2011-12-09 39 views
4

Мне интересно, может ли кто-нибудь сообщить мне, как они обрабатывают сообщения об успешном/неуспешном в CodeIgniter.CodeIgniter - отображение сообщения об успешном или неуспешном

Например, что им делать в тот момент, когда пользователь подписывает на мой сайт, это то, что происходит в контроллере

if (!is_null($data = $this->auth->create_user($this->form_validation->set_value('username'), $this->form_validation->set_value('password')))) { 
    // Redirect to the successful controller 
    redirect('create-profile/successful'); 
} else { 
    // Redirect to the unsuccessful controller 
    redirect('create-profile/unsuccessful'); 
} 

Затем в том же контроллере (Create-профиль), у меня есть 2 методы, которые, как следующий

function successful() 
{ 
    $data['h1title'] = 'Successful Registration'; 
    $data['subtext'] = '<p>Test to go here</p>'; 

    // Load the message page 
    $this->load->view('message',$data); 
} 

проблема с этим в том, что я могу просто пойти в site.com/create-profile/successful и он покажет страницу.

Если кто-то может показать мне лучший способ справиться с этим, было бы весьма полезно.

Cheers,

+0

Подумайте об использовании данных флэш-сессии. Сообщение о предупреждении или успешном сообщении при обнаружении данных сеанса будет намного более эффективным, чем создание отдельных страниц для каждого успеха/неудачи. – user482594

ответ

4

есть причина не использовать это:

if (!is_null($data = $this->auth->create_user($this->form_validation->set_value('username'), $this->form_validation->set_value('password')))) { 
    $data['h1title'] = 'Successful Registration'; 
    $data['subtext'] = '<p>Test to go here</p>'; 

    // Load the message page 
    $this->load->view('message',$data); 
} else { 
    $data['h1title'] = 'Unsuccessful Registration'; 
    $data['subtext'] = '<p>Test to go here</p>'; 

    // Load the message page 
    $this->load->view('message',$data); 
} 

здоровается, Стефан

+0

Хммм, это, кажется, имеет смысл ... это устранит дополнительный сегмент URL-адреса, так как это не будет – BigJobbies

2

Вместо перенаправления просто показать разные виды.

Вот некоторые примеры кода:

if ($this->input->server('REQUEST_METHOD') == 'POST') 
{ 
    // handle form submission 
    if (!is_null($data = $this->auth->create_user($this->form_validation->set_value('username'), $this->form_validation->set_value('password')))) 
    { 
     // show success page 
     $data['h1title'] = 'Successful Registration'; 
     $data['subtext'] = '<p>Test to go here</p>'; 

     // Load the message page 
     $this->load->view('message',$data) 
    } 
    else 
    { 
     // show unsuccessful page 
     $data['h1title'] = 'Unsuccessful Registration'; 
     $data['subtext'] = '<p>Test to go here</p>'; 

     // Load the message page 
     $this->load->view('message',$data) 
    } 
} 
else 
{ 
    // show login page 
    $data['h1title'] = 'Login'; 
    $data['subtext'] = '<p>Test to go here</p>'; 

    // Load the message page 
    $this->load->view('login',$data) 
} 
6

Вы можете установить flashdata перед перенаправление:

$this->session->set_flashdata('create_profile_successful', $some_data); 
redirect('create-profile/successful'); 

 

function successful(){ 
    if(FALSE == ($data = $this->session->flashdata('create_profile_successful'))){ 
     redirect('/'); 
    } 

    $data['h1title'] = 'Successful Registration'; 
    $data['subtext'] = '<p>Test to go here</p>'; 

    // Load the message page 
    $this->load->view('message',$data); 
} 
Смежные вопросы