Codeigniter更新函数得到404


codeigniter update function gets 404

我已经创建了一个更新函数,但我一直得到一个404错误,我无法找出什么似乎是问题。如果您能帮忙,我将不胜感激。

控制器news.php

 public function update($id)
    {
    $id = $this->uri->segment(3);
    $data = array(
   'title' => $this->input->post('title'),
   'text' => $this->input->post('text'),
   'slug' => $this->input->post('slug'),
    );
   if($this->news_model->exists($id)) {
   $this->news_model->update($id, $data);
   } else {
   $this->news_model->insert($data);
  }
  }

news_model.php

public function update_news($id, $data)
{
$this->db->where('id', $id);
$this->db->update('news', $data); 
}

路线
$route['news/update/(:num)'] = 'news/update/$1';
观点

update.php

 <h2>Update an item</h2>
 <?php echo validation_errors(); ?>
 <?php echo form_open('/news/update'.$news_item['id']) ?>

<label for="title">Title</label> 
<input type="input" name="title" /><br />
 <label for="slug">Slug</label> 
 <input type="input" name="slug" /><br />
<label for="text">Text</label>
 <textarea name="text"></textarea><br />
 <input type="submit" name="submit" value="Update an item" /> 
 </form>  

index . php

 <p><a href="news/update/<?php echo $news_item['id'] ?>">update article</a></p>

提交表单时收到404吗?

尝试将表单的开头改为:

<?php echo form_open($news_item['id']) ?>

或者如果您激活了uri帮助器:

<?php echo form_open(base_url() . 'news/update/'.$news_item['id']) ?>

尝试加载URL helper,并从config文件夹中的配置文件中设置base_url为yourpath或yourpath/index.php,如果您使用index.php用于示例http://localhost/codeigniter/index.php,并更新视图为<?php echo form_open(base_url() . 'news/update/'.$news_item['id']) ?>

我想你在你的表单打开中缺少一个正斜杠。你有

<?php echo form_open('/news/update'.$news_item['id']) ?>

但应该是

<?php echo form_open('/news/update/'.$news_item['id']) ?>

我也同意@Mohamed Nagy的观点,你应该加载url helper并使用base_url()

我注意到的其他一些事情是,在你的模型中,你的更新函数称为update_news(),但在你的控制器中,你正在调用update()。这可能会导致错误

另外,当您将其传递给函数时,为什么要使用$this->uri->segment(3);来获取id ?