2013-08-04 3 views
2

Мои сообщения об ошибках работают хорошо, но я не знаю, как выводить сообщение об успешном завершении NOT в данные флеш сессии.Показать форму успеха после отправки в CodeIgniter

<div class="tpl-callbacks" id="tpl-callback"> 
    <?php 
     if($this->session->flashdata('message')) 
      $message = $this->session->flashdata('message'); 
     if($this->session->flashdata('error')) 
      $error = $this->session->flashdata('error'); 
     if($this->session->flashdata('success')) 
      $success = $this->session->flashdata('success'); 
     // THIS WORKS WITHOUT FLASHDATA 
     if(function_exists('validation_errors') && validation_errors() != '') 
      $error = validation_errors(); 
     // AND HOW TO DO THE SAME BUT FOR SUCCESS AND WITHOUT FLASHDATA ? 
    ?> 
    <?php if(!empty($error)):?> 
     <div class="alert alert-error"> 
      <a class="close" data-dismiss="alert">&times;</a> 
      <?php echo $error;?> 
     </div> 
    <?php endif;?> 
    <?php if(!empty($success)):?> 
     <div class="alert alert-success"> 
      <a class="close" data-dismiss="alert">&times;</a> 
      <?php echo $success;?> 
     </div> 
    <?php endif;?> 
</div> 

Поэтому, когда я делаю проверку формы после того, как отправить, я могу вывода сообщений об ошибках и успех сообщение flashdata, но я не знаю, как показать сообщение успеха без использования flashdata:

if($this->form_validation->run() == FALSE){ 
    // $this->session->set_flashdata('error', validation_errors()); // <-- THIS WORKS IN FLASHDATA 
    validation_errors(); <-- THIS WORKS BUT WITHOUT FLASHDATA, WHICH IS GOOD ALSO 
}else{ 
    // Set the callback message 
    $this->session->set_flashdata('success', 'Success!'); // <-- THIS WORKS IN FLASHDATA 
    // AND HOW I SHOULD DO THE SAME, BUT WITHOUT FLASHDATA ? 
    // SO IT WILL WORK WITH MY MAIN TEMPLATE.PHP 

} 

Может ли кто-нибудь указать мне на правильный ответ или дать мне советы, что делать, чтобы добиться этого?

Спасибо

+0

почему вы не публикуете форму на той же странице? – sbaaaang

+0

@sbaaaang - я пробовал это, и он работает, проблема была в том, что я не знал, как это сделать на той же странице до – aspirinemaga

+0

ehehe никаких проблем, надеюсь, что вы все равно исправили;) – sbaaaang

ответ

3

Ну, если вы не перенаправлять, то вы можете использовать переменную и бросить его на ваш взгляд. Таким образом, это может быть что-то вроде этого в вашем контроллере:

$messages = array(); 
$messages[] = "My message"; 

$view_data['messages'] = $messages; 
$this->load->view('your view', $view_data); 

На ваш взгляд массив сообщений будет доступен, и вы можете его использовать.

Однако, если вы хотите сделать переадресацию, вам необходимо временно сохранить его где-нибудь, чтобы сохранить его в живых между вашими запросами. Сессия flashdata в codeigniter очень подходит для этого.

Validation_errors(); в вашем контроле ничего не делает. Так как вы не повторяете это. Тот факт, что он, вероятно, работал, вероятно, потому, что вы также использовали эту функцию в своем представлении.

+0

Отлично! Так просто, я не знаю, как я не понял, что раньше – aspirinemaga

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