我觉得我有足够的CI经验,最终开始愚弄创建留言板...或者至少那就是我的想法,直到我被困在生成基于主题名称(slugs)的动态页面。 / p>
因此,我创建了一个控制器/模型/视图,并设置了一个向数据库提交必要信息的表单。我将线程拉出并显示它们,并根据主题标题为每个线程生成链接...我基本上遵循CI教程,编辑它以满足我的需要。
然而,理解生成动态页面URL的概念让我失望。通过听到在此过程中发生的具体情况,我理解得更好,而codeigniter教程(新闻)并没有很好地解释它。它只是告诉你该做什么以及如何做,而不是为什么。
任何人都想要更详细地解释动态页面编码的过程。
动态页面的含义是:
http://your-site.com/news/1/hello-world http://your-site.com/news/1/foo-bar
hello world和foo bar。
以下是让我感到困惑的一些部分:
<?php
class Pages extends CI_Controller {
public function view($page = 'home')
{
}
}
继承路由
$route['default_controller'] = 'pages/view';
$route['(:any)'] = 'pages/view/$1';
$ 1代表什么?那有什么具体的网址吗?你什么时候用2美元?它是用CI构建的代码,还是可以使用任何变量?
我确信答案可以更加详细,但如果有人能回答上述问题,我相信它会非常有用。
在理论上回答了这些问题,为论坛帖子制作新页面应该怎么做?
谢谢!
答案 0 :(得分:4)
$ 1代表什么?那有什么具体的网址吗?你什么时候开心 用2美元?它是用CI构建的代码,还是可以使用任何变量?
$1
表示对通配符(:any)
创建的变量的引用。没有$2
,因为您只有一个通配符。
如果您创建了这样的路线,您将拥有第二个通配符:
$route['pages/(:num)/(:any)'] = 'pages/$1/$2';
话虽如此,你问题中的路由设置会破坏CI的MVC架构和路由系统的目的,因为你将所有路由重定向到pages/views
,我很确定你想要的东西如下:
$route['default_controller'] = 'pages/view';
$route['pages/view/(:any)'] = 'pages/view/$1';
答案 1 :(得分:3)
<?php
class Pages extends CI_Controller {
public function view($page = 'home')
{
}
}
此方法的相应网址为http://example.com/pages/view/。在方法中,它设置为$page = 'home'
,因为如果网址中没有第三个网段,则默认为home
。
$route['(:any)'] = 'pages/view/$1';
变量$1
是您(:any)
的所有内容。因此,如果您的网址是http://example.com/testing,它会路由到http://example.com/pages/view/testing,这会将您的$ page var从您的查看方法设置为“测试”。