2017-04-27 141 views
0

我不能说明如何在codeIgniter 3中进行自定义路由吗?CodeIgniter 3中的自定义路由

e.g我已经控制器命名“用户”,它有一个名为方法“文章”这需要一个参数“$ id为”

所以我的路线是:/用户/条/ 40

但我想要做的是这样的:/新闻/技术等

回答

1

那么,你可以尝试这样的

$route[‘news’] = “categories/show/3”; 

这里我假设你有一个控制器categories和方法show3是参数

$route[‘news/technology’] = “categories/show/10”; 

这里我假设你有一个控制器categories和方法show10是参数。这意味着您显示的是父类别的子类别technologynews

或者您可以在数据库字段中使用slug并将其映射到您的控制器中。

感谢

0

所以这里是我的解决方案:

在我型号文件我改变paramater搜索“标题”,而不是“ID” 所以在型号代码将

->where(['category_name' => $id]) 

查看我更改了锚标记中的网址从

<?= anchor("user/category/{$article->category_name}",$article->category_name) ?> 

<?= anchor("{$article->category_name}",$article->category_name) ? 

终于在routes.php文件文件

$route['(:any)'] = '/user/category/$1'; 

所以现在我URL

newsPortal/Technology 

它的工作完美的我。如果你想更多的解释请在下面评论。我认为这非常简单。

+0

当您将新闻存储到数据库中时,将[slug](https://en.wikipedia.org/wiki/Semantic_URL)存储在一个字段中(确保其在数据库中具有唯一值)。这样你可以避免以后的空间问题,特殊字符等。因此,而不是查询数据库的标题,你会查询数据库的slu。。 – Tpojka

+0

谢谢!我将在未来的项目中这样做。 – naan

+1

您可以使用CI内置[功能](https://www.codeigniter.com/user_guide/helpers/url_helper.html#url_title)。 – Tpojka