我想知道是否有人可以帮助我。
我在我的codeigniter应用程序中构建了一个论坛,并且我在确定如何构建细分时遇到了一些麻烦。
根据CI用户指南,uri构建如下
www.application.com/CLASS/METHOD/ARGUMENTS
这很好,除了我需要构建那个部分有点不同。
在我的论坛中,我有类别和帖子,因此要查看类别,请使用以下网址
www.application.com/forums
这很好,因为它的类名,但我希望下一个动态段,例如,如果我有一个名为'mycategory'的类别和一个名为'this-is-my-first-post'的帖子',那么结构应该是
www.application.com/forums/mycategory/this-is-my-first-post
我似乎无法实现这一点,因为根据文档,'mycategory'需要成为一种方法,即使我要做/ forums / category / mycategory / this-is-my-first-post之类的东西仍然让人感到困惑。
如果有人曾经做过这样的事情,那么他们能不能为我做点清楚,我非常坚持这一点。
干杯,
答案 0 :(得分:1)
文件中没有任何混淆,但你有点困惑。我来给你一些建议 您创建一个视图,您可以在其中创建要单击的超链接,并在您提供此指令的超链接中
<a href="www.application.com/forums/category/mycategory/this-is-my-first-post">First Post</a>
在控制器中,您可以轻松获得此
$category = $this->uri->segment(3);
$post = $this->uri->segment(4);
现在你可以继续了。 如果您认为您的需求是其他东西,您可以使用hack我已经为此创建了一个动态分配段的方法。
转到system / core / uri.php并添加此方法
function assing_segment($n,$num)
{
$this->segments[$n] = $num;
return $this->segments[$n];
}
如何使用
$this->uri->assign_segment(3,'mycategory');
$this->uri->assign_segment(4,'this-is-my-first-post');
如果您有错误&#39;您提交的uri已禁止使用字符&#39;然后转到application / config / config.php并添加 - 到此
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
答案 1 :(得分:0)
您可以制作一条转发查询功能的路线 例如,在routes.php中添加类似于
的行$route['product/(:any)/(:any)'] = "forums/cat_lookup/$1/$2";
然后,此函数将执行数据库查找以查找类别。
...
public function cat_lookup($cat, $post) {
$catid = $this->forum_model->get_by_name($cat);
if ($catid == FALSE) {
redirect('/home');
}
$post_id = $this->post_model->get_by_name($post);
/* whatever else you want */
// then call the function you want or load the view
$this->load->view('show_post');
}
...
如果类别不存在,此方法将保持URL看起来并处理任何问题。
不要忘记您可以使用下划线将类别/帖子存储在数据库中并使用{{3功能使它们漂亮,
答案 2 :(得分:0)
Set in within config/routes.php
$route['song-album/(:any)/:num'] = 'Home/song_album/$id';
fetch in function with help of uri segment.
$this->uri->segment(1);