繁体   English   中英

Codeigniter动态路由到单个控制器

[英]Codeigniter Dynamic Routing to single controller

我知道这个问题已经以类似的方式被问过几次。 但是,我一直在努力寻找适合自己情况的答案。 我主要从事Microsoft项目,然后介入该项目以在紧缩期间提供帮助。

这是情况。

我们有一个拥有超过600个不同页面的网站的客户。 实际上,每个页面都使用相同的模板,只是填充了不同的数据。 我们为他开发了一个CMS,使他可以随意创建新页面。

我理想的解决方案是允许我将新创建的页面的名称存储在数据库中。 例如 new_page_1已创建,现在存在于数据库中。 现在,当我输入www.mysite.com/new_page_1时,它需要转到一个查找“ new_page_1”(在数据库中)的控制器,如果存在,则会加载一个视图(该视图将需要用于所有600页)然后从数据库中获取其他数据并填充各个部分。

因此,基本上,超过600个页面需要使用相同的路由数组并映射到同一控制器,然后再映射到同一视图。

我试过使用$ route ['(:any)'] ='custom_controler / create / $ 1以及相同的数组键,但是使用main和_remap。 不管它每次尝试在视图中查找页面名称是什么(因为我将一个通用视图用于600个页面,所以它永远不会存在)

关于如何做到这一点的任何想法?

更新routes.php(这是文件的最后一行)

$route['(:any)'] = "main/create/$1";

main.php(控制器)

class Main extends MY_Controller {

public function __construct() {
    parent::__construct();
}
public function create($page)
{
    $c = new Category();
    $c->get_by_name(ucfirst($page));
    $this->load->view('site/index',$c);
}

}

我尝试使用的URL是sitename.servername.com/health网站名称和服务器名称显然已替换。

我得到的错误是

遇到错误

无法加载请求的文件:health / main / create.php

您是否在错误页面上看到CodeIgniter错误模板或通用服务器错误? 该错误字符串听起来非常像您正在使用Apache或Nginx(或使用的任何主Web服务器),实际上它甚至根本无法解析到您的CodeIgniter应用程序,而是搜索一个不存在的PHP文件。 您可能需要使用mod_rewrite或类似的方法使该URL指向CodeIgniter安装。

否则,您的实现看起来就不会完全错误:您可能需要确保main.php也是默认路由。

如果告诉您,应用程序将仅在视图中查找页面名称。 包罗万象的控制器方法应在数据库中检查有效的页面名称,然后无论验证哪个页面,都将加载相同的视图(尽管传递给该视图的数据不同)。

使用(:any)包罗万象的路线是完全可以的。 您的某个地方的控制器代码让您大跌眼镜。 如果您继续挣扎,请使用代码更新您的帖子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM