我已经创建了一个更新功能,但我一直收到404错误,我无法弄清楚似乎是什么问题。帮助会受到赞赏谢谢。
controller 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>
答案 0 :(得分:0)
提交表单时会得到404吗?
尝试将表单开头更改为:
<?php echo form_open($news_item['id']) ?>
或者如果您激活了uri助手:
<?php echo form_open(base_url() . 'news/update/'.$news_item['id']) ?>
答案 1 :(得分:0)
尝试加载URL帮助器,并从config文件夹中的配置文件中设置base_url
到yourpath或yourpath / index.php,如果你使用index.php为ex。 http://localhost/codeigniter/index.php
,并将视图更新为
<?php echo form_open(base_url() . 'news/update/'.$news_item['id']) ?>
答案 2 :(得分:0)
我认为你在表单中缺少正斜杠。
<?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);
传递给函数时使用{{1}}来获取id?