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