使用codeigniter成功发送表单时显示“添加另一个”按钮

时间:2014-03-07 13:20:36

标签: forms codeigniter

我有这个名为新闻和事件的表单,我希望在表单成功保存后,表格将隐藏,然后会出现添加另一个按钮。我使用会话集userdata,这样当表单成功保存后,将出现添加另一个按钮,然后表格将隐藏。我的代码运行良好,但问题是,成功发送后添加另一个按钮将不起作用这里是我的控制器

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
session_start();

class News_and_events extends CI_Controller {
  public function __construct(){
      parent::__construct();
      $this->load->library('form_validation');
      $this->load->model('admin_model', 'am');
  }

  public function index(){
    if($this->session->userdata('logged_in')){
      $this->data['title'] = 'News and Events | Spring Rain Global Consultancy Inc Admin Panel';
      $this->data['logout'] = 'Logout';

      $session_data = $this->session->userdata('logged_in');
      $this->data['id'] = $session_data['id'];
      $this->data['username'] = $session_data['username'];

      $this->data['allData'] = $this->am->getAllData();


      $this->load->view('pages/admin_header', $this->data);
      $this->load->view('content/news_and_events', $this->data);
      $this->load->view('pages/admin_footer');
    }else{
      redirect('login', 'refresh');
    }
  }

  public function add(){
    if($this->session->userdata('logged_in')){

      $this->form_validation->set_rules('date', 'Date', 'trim|required|xss_clean');
      $this->form_validation->set_rules('event', 'Event', 'trim|required|xss_clean');
      $this->form_validation->set_rules('description', 'Description', 'trim|required|xss_clean');

      if($this->form_validation->run() == FALSE){
         $this->data['title'] = 'News and Events | Spring Rain Global Consultancy Inc Admin Panel';
         $this->data['logout'] = 'Logout';

          $session_data = $this->session->userdata('logged_in');
          $this->data['id'] = $session_data['id'];
          $this->data['username'] = $session_data['username'];
          $this->data['allData'] = $this->am->getAllData();

          $this->load->view('pages/admin_header', $this->data);
          $this->load->view('content/news_and_events', $this->data);
          $this->load->view('pages/admin_footer');

      }else{
        $array = array(
                  'Date' => $this->input->post('date'),
                  'Event' => $this->input->post('event'),
                  'Description' => $this->input->post('description')

                );
        $this->am->saveData($array);
        $this->session->set_userdata('add_another', $array);
        redirect('news_and_events', 'refresh');
      }

    }else{
      redirect('homepage', 'refresh');
    }
  }

}

和我的观点

<div class="container" >
    <br />
    <br />
    <br />
    <ul id="nav">
     <li><a href="<?php echo base_url().'homepage'?>" title="Home"><h4>Home</h4></a></li>
     <li><a href="<?php echo base_url().'news-and-events'?>" title="News and Events"><h4>News and Events</h4></a></li>
     <li><a href="" title="Activities"><h4>Activities</h4></a></li>
    </ul>
    <div class="starter-template">
      <h1>News And Events</h1>
      <?php if($this->session->set_userdata('add_another')):?>
        <div id="add_another" style="float:left;">
            <input  type="button" value="Add Another" class="btn btn-primary" />
          </div>
       <?php else: ?>
         <form action="<?php echo base_url().'news-and-events/add'?>" method="post">
           <?php echo validation_errors('<div class="error">', '</div>');?>
          <table class="table-striped">
            <tr>
              <td>Date: </td>
              <td><input type="text" id="datepicker" name="date" value="<?php echo set_value('date');?>" /></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
            </tr>
            <tr>
              <td >Event: </td>
              <td ><input  type="text" name="event" value="<?php echo set_value('event');?>" /></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
            </tr>
            <tr>
              <td width="20%">Description: </td>
              <td><textarea cols="30" rows="5" name="description" ><?php echo set_value('description');?></textarea></td>
            </tr>
             <tr>
              <td width="20%">&nbsp;</td>
              <td><input type="submit" value="Add" class="btn btn-success" /></td>
            </tr>
          </table>
        </form>
        <?php endif; ?>
      <br />
      <br />
      <table class="table" >
        <tr>
          <th>Date</th>
          <th width="51%">Event</th>
          <th>Description</th>
          <th>Options</th>
        </tr>
        <?php foreach($allData as $allData): ?>
        <tr>
          <td><?php echo $allData->Date; ?></td>
          <td><?php echo $allData->Event; ?></td>
          <td></td>
          <td></td>
        </tr>
        <?php endforeach; ?>
      </table>
    </div>

  </div><!-- /.container -->

<script> 
      var date = new Date();
      var currentMonth = date.getMonth();
      var currentDate = date.getDate();
      var currentYear = date.getFullYear();

      $('#datepicker').datepicker({
        minDate: new Date(currentYear, currentMonth, currentDate),
        dateFormat: "yy-mm-dd"
      });

</script>

在我的视图文件中,我添加了if else语句$ this-&gt; session-&gt; set_userdata('add')就在h1标签下面,这是新闻和事件,这将在表单成功保存时触发语句!

有人可以帮我解决这个问题吗?或者如何正确地做到这一点?

非常感谢任何帮助!谢谢!

1 个答案:

答案 0 :(得分:0)

而不是这一行

<?php if($this->session->set_userdata('add_another')):?>

使用此

   <?php if($this->session->userdata('add_another')):?>

并在加载视图之前在控制器中添加此行

  $this->session->set_userdata('add_another',1);
相关问题