变量在提交表单时丢失了id

时间:2015-12-15 12:00:25

标签: php codeigniter

我正在使用codeigniter而我正在尝试更新新闻文章,当用户点击更新按钮时,我通过使用id = $ this-> uri-> segment(3)获取网址中的ID ,当单击更新按钮时,它会加载一个名为update的视图。我遇到的问题是变量没有将我的id传递给模型,因为当我提交表单时,id不再存储在$ id变量中。任何帮助都将受到赞赏。

新闻控制器

public function update() {


    $id = $this->uri->segment(3);
    $this->load->helper('form');
    $this->load->library('form_validation');

    $data['title'] = 'Update a news item';
    $this->load->view('news/update');
    $this->form_validation->set_rules('title', 'Title', 'required');
    $this->form_validation->set_rules('text', 'Text', 'required');

    if ($this->form_validation->run())
    {


    $this->News_model->update($id);
    redirect('News/index');

    }


} 

新闻模式

 public function update($id) {

        $slug = url_title($this->input->post('title'), 'dash', TRUE);


         $data = array(
        'title' => $this->input->post('title'),
        'slug' => $slug,
        'text' => $this->input->post('text')
    );



     $this->db->where('id',$id);
     $this->db->update('news',$data);

 }

主要新闻页面

    <h1><?php echo $title; ?></h1>
    <p class="lead"><a href="<?php echo site_url('News/create'); ?>">Create Article</a></p>;
  </div>


 <?php foreach ($news as $news_item): ?>
 <h3><?php echo $news_item['title']; ?></h3>

  <div class="row">
    <div class="col-xs-12 col-sm-6 col-lg-6"> <?php echo $news_item['text']; ?></div>
    <div class="col-xs-6 col-lg-2"><p><a href="<?php echo site_url('news/'.$news_item['id']); ?>">View article</a></p></div>
    <div class="col-xs-6 col-lg-2"><p><a href="<?php echo site_url('News/update/'.$news_item['id']); ?>">update</a></p></div>
     <div class="col-xs-12 col-sm-6 col-lg-2"><p><a href="<?php echo site_url('News/delete/'.$news_item['id']); ?>">Delete article</a></p></div>
    </div>

 <?php endforeach; ?>

1 个答案:

答案 0 :(得分:1)

为什么使用 - &gt; uri来获取URI段?第一个段是控制器名称,第二个是方法名称,任何其他段,作为输入参数传递给方法。因此,重新定义您的更新方法以包含$ id作为输入参数。并立即检查$ id是否已设置。如果不是,那么您的网址不正确。