我正在学习 Codeigniter 2 并成功地玩弄了他们关于如何创建基本新闻应用程序的教程/示例。
所以在完成这项工作后,我想尝试在新闻项目中添加一个“删除记录”链接,看看我是否可以自己解决这个问题。
我将此添加到我的模型文件中news_model.php
:
public function delete_news($id) {
$this->db->delete('news', array('id' => $id));
}
我将此添加到我的控制器文件中news.php
:
public function delete($id) {
$this->news_model->delete_news($id);
$data['news'] = $this->news_model->get_news();
$data['title'] = 'News item deleted';
$this->load->view('templates/header', $data);
$this->load->view('news/index', $data);
$this->load->view('templates/footer');
}
我将此添加到我的视图文件中,index.php
:
<a href="/news/delete/<?php echo $news_item['id'] ?>">Delete Item</a>
最后,我将它添加到我的配置文件中,routes.php
$route['news/delete/(:any)'] = 'news/delete/$1';
它似乎按书面方式工作。
从 的新闻列表页面/news/
,我单击新闻项目的链接,当页面重新加载时,相应的项目就消失了。
问题:
1) 页面重新加载后,URL 显示/news/delete/id
,其中/id
是项目编号。但是,我不想要这个新 URL,我真的只想/news/
重新加载页面以显示新内容。显然,我这样做的方式有潜在的危险,因为用户简单的页面刷新会删除另一个项目。解决/处理此问题的标准方法是什么?
2) 在我的 Controllerdelete()
函数中,在第一行之后,我基本上只是从 Controllerindex()
函数中重复相同的 5 行代码。毫无疑问,这在某种程度上与问题 #1 相关,但同样,更好的方法是什么?
3)我错过了与“标准”或“最佳实践”有关的任何其他内容吗?