CodeIgniter-动态URL段

CodeIgniter-动态URL段,codeigniter,Codeigniter,我想知道是否有人能帮我 我在我的codeigniter应用程序中构建了一个论坛,但我在理解如何构建这些部分时遇到了一些困难 根据CI用户指南,uri构建如下 www.application.com/CLASS/METHOD/ARGUMENTS 这是好的,除了我需要结构的一部分有点不同 在我的论坛中,我有类别和帖子,因此要查看类别,请使用以下url www.application.com/forums 这很好,因为它是类名,但我希望下一个段是动态的,例如,如果我有一个名为“mycategory

我想知道是否有人能帮我

我在我的codeigniter应用程序中构建了一个论坛,但我在理解如何构建这些部分时遇到了一些困难

根据CI用户指南,uri构建如下

www.application.com/CLASS/METHOD/ARGUMENTS
这是好的,除了我需要结构的一部分有点不同

在我的论坛中,我有类别和帖子,因此要查看类别,请使用以下url

www.application.com/forums
这很好,因为它是类名,但我希望下一个段是动态的,例如,如果我有一个名为“mycategory”的类别和一篇名为“This is my first post”的文章,那么结构应该是

www.application.com/forums/mycategory/this-is-my-first-post
我似乎无法做到这一点,因为根据文档,“mycategory”需要成为一种方法,即使我要做像/forums/category/mycategory/这是我的第一篇帖子,它仍然会让人困惑

如果有人以前做过类似的事情,他们能帮我解释一下吗?我对此很感兴趣


干杯,

文档中没有让人困惑的内容,但您有点困惑。让我给你一些建议。
您可以创建一个视图,在其中创建要单击的超链接,并在超链接中提供此说明

<a href="www.application.com/forums/category/mycategory/this-is-my-first-post">First Post</a>
现在你可以继续了。 如果您认为您的需求是其他的,那么您可以使用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');
如果出现错误“您提交的uri包含不允许的字符”,请转到application/config/config.php并将-添加到该文件中

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';

您可以创建一个转发到查找功能的路由。
例如,在your 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保持您想要的外观,并在类别不存在的情况下处理任何问题。
不要忘记,您可以使用下划线将类别/帖子存储在数据库中,并使用该函数使其美观。

请看一看,哦,第一点现在很有意义,我想我只是需要有很多if-else语句来为人们指出正确的方向,谢谢
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);
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);