0

我知道这个问题已经以类似的方式被问过好几次了。但是,我正在努力寻找适合我的情况的任何答案。我主要从事微软项目,并在关键时刻介入了这个项目以提供帮助。

这是情况。

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

我理想的解决方案将允许我将新创建的页面的名称存储在数据库中。前任。new_page_1 已创建并且现在存在于数据库中。现在,当我输入 www.mysite.com/new_page_1 时,这需要转到一个查找“new_page_1”(在 DB 中)的控制器,如果它存在,则加载一个视图(该视图需要用于所有 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

4

2 回答 2

1

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

否则,您的实现看起来并没有完全错误:您可能还需要确保main.php是默认路由。

于 2013-05-23T02:21:51.653 回答
0

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

使用(:any)包罗万象的路线非常好。你的控制器代码让你失望。如果您继续挣扎,请使用代码更新您的帖子。

于 2013-05-23T00:43:32.570 回答