【问题标题】:codeigniter routing functionscodeigniter 路由函数
【发布时间】:2013-07-05 15:24:57
【问题描述】:

我的路由有一个小问题。

我的路线:

$route['category/(:any)/(:num)'] = "site/index/$2"; //not working
$route['category/(:any)'] = "site/index"; //not working
$route['category/(:any)/(:any)'] = "site/view/$2"; // working
$route['Search'] = "site/search"; // working

我想要的:http://example.com/category/Home - 调用站点/索引函数 http://example.com/category/Home/2 使用参数 $2 调用站点/索引函数 我在这两条规则上遇到了 404 错误。

我尝试的是回显 category/(:any)/(:num) 的参数,它回显了它。这个回声在索引函数内。视图和模型存在于我声明的路径中。没有它,索引页本身就无法工作。所以我认为问题必须出在路由上

最有趣的是,当我将 category/(:any) 路由更改为站点/视图时,它正在工作,但是当我在那里设置站点/索引时,它却不起作用。即使我只设置了站点。

【问题讨论】:

  • 删除您的路线并重试。它应该自动路由到正确的操作。正如here 解释的那样,默认行为是example.com/class/function/id/
  • 我尝试删除路由并重新添加,但没有任何反应。如果路线不存在,它会调用站点/视图函数
  • 好的...我知道你有什么问题
  • 实际上,您的所有路线都很奇怪。即:$route['(:any)'] 将指向站点。这意味着,无论您键入什么内容,都将转到 site。这是大量重复内容。
  • 是的,你的路线乱七八糟,我什至不知道从哪里开始。

标签: php codeigniter


【解决方案1】:

我认为您要做的是将您的 site 类作为“默认控制器”。试试这个:

$route['default_controller'] = "site";
$route['(:any)'] = "site/view/$1";
$route['(:num)'] = "site/index/$1";

我真的不知道你想用你的site/view/$1site/index/$1 做什么,它会像这样工作:

example.com/someaction 将匹配$route['(:any)'] 并将调用site 控制器的view 方法,并将someaction 作为字符串参数。

example.com/2 将匹配$route['(:num)'] 并使用2 作为整数参数调用site 控制器的index 操作。

example.com/admin 将调用admin 控制器的index 操作

example.com/admin/category 将调用admin 控制器的category 操作

【讨论】:

  • 我从头开始路由它。这不会这样做,因为 site/index/$1 用于分页,并且每个类别都有自己的文章数量。现在我拥有的是唯一的规则@ 987654341@ 在转到example.com/category/Home 之后我得到404。我很困惑.. 编辑:如果我将规则设置为“站点/视图”,它会通过我查看功能但是如果我想要索引功能,它不会让我。
  • 那是因为你忘记了参数:$route['category/(:any)'] = "site/index/$1";。尝试阅读更多文档。
  • 索引函数不需要参数,我也试过这个,它也不起作用。再试一次以防万一现在还是不行
  • 再次,阅读更多文档。如果您愿意,可以尝试准确解释您在问题中所期望的行为(哪个 uri 应该指向哪个方法,...)
猜你喜欢
  • 1970-01-01
  • 2010-11-20
  • 2011-07-08
  • 1970-01-01
  • 2013-05-05
  • 1970-01-01
相关资源
最近更新 更多