我觉得我在CI方面有足够的经验,终于可以开始创建留言板了。。。或者至少我是这么想的,直到我陷入了基于主题名称(slugs)生成动态页面的困境。
因此,我创建了控制器/模型/视图,并设置了一个向数据库提交必要信息的表单。我把线程拉出并显示出来,并根据主题标题为每个线程生成一个链接。。。我基本上遵循了CI教程,对其进行了编辑以满足我的需求。
然而,理解生成动态页面URL的概念让我很困惑。通过准确地听到这个过程中发生的事情,我能更好地理解,而代码点火器教程(新闻)并没有很好地解释它。它只是简单地告诉你该做什么和如何做,而不是为什么。
任何人都可以尝试更详细地解释动态页面的编码过程。
我所说的动态页面是指:
http://your-site.com/news/1/hello-worldhttp://your-site.com/news/1/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的内置代码,还是可以使用任何变量?
我相信答案会更详细,但如果有人能回答上面的一些问题,我相信会很有帮助。
有了这些问题的答案,理论上,应该怎么做才能为论坛帖子创建一个新页面?
谢谢!
1美元代表什么?有什么具体的网址吗?你什么时候会用2美元?它是CI的内置代码,还是可以使用任何变量?
CCD_ 1表示对由通配符CCD_ 2创建的变量的引用。没有$2
,因为您只有一个通配符。
如果你创建了这样的路线,你会有第二个通配符:
$route['pages/(:num)/(:any)'] = 'pages/$1/$2';
话虽如此,你的问题中的路由设置有点违背了CI的MVC架构和路由系统的目的,因为你正在将所有路由重定向到pages/views
,我敢肯定你想要这样的东西:
$route['default_controller'] = 'pages/view';
$route['pages/view/(:any)'] = 'pages/view/$1';
<?php
class Pages extends CI_Controller {
public function view($page = 'home')
{
}
}
此方法对应的url为http://example.com/pages/view/.在该方法中,它被设置为$page = 'home'
,因为如果url中没有第三个段,它将默认为home
。
$route['(:any)'] = 'pages/view/$1';
变量$1
是您的(:any)
。所以如果你的网址是http://example.com/testing,它将路由到http://example.com/pages/view/testing然后将视图方法中的$pagevar设置为"测试"。