CakePHP路由别名,无前缀

CakePHP路由别名,无前缀,cakephp,Cakephp,我有一个带有一系列小部件的仪表板。根据规范,小部件需要隐藏在/widgets/目录下 因此,我在routes.php中添加了以下内容 Router::connect('/widget/:controller/:action/*', array()); 但我似乎在widget/links/和widget/links/view/1上遇到了麻烦 我是CakePHP新手,但这看起来并不那么令人印象深刻。我还没有在书中或通过搜索找到任何东西。因此,我们非常感谢您的帮助 谢谢。好吧……冒着声明显而易见的风

我有一个带有一系列小部件的仪表板。根据规范,小部件需要隐藏在/widgets/目录下

因此,我在routes.php中添加了以下内容

Router::connect('/widget/:controller/:action/*', array());
但我似乎在widget/links/和widget/links/view/1上遇到了麻烦

我是CakePHP新手,但这看起来并不那么令人印象深刻。我还没有在书中或通过搜索找到任何东西。因此,我们非常感谢您的帮助


谢谢。

好吧……冒着声明显而易见的风险……您的路由以/widget/开始,但您表示您正试图通过复数URI/widgets/访问它。这是个问题。如果这只是一个输入错误,那么当你遇到麻烦时,了解你看到的错误会有所帮助

更新:


是的,那是个打字错误。我纠正了它。小部件/links/出现的错误是:错误:找不到WidgetController。看来我的索引/默认路由是主要问题


根据这些信息,CakePHP似乎认为小部件就是您的控制器。蛋糕处理自上而下的路线,并找到第一个匹配的。确保此路径上方没有类似于/:controller/…的路径。。。或者在这条路径之上以变量开头的任何其他路径。

在v1.2.7 ie上似乎有效。./widget/links/view/70转到links控制器::view70我会尝试制作一个Widgets插件,然后路由会自行处理。数组'plugin'=>'widgets'、'controller'=>'widgets'、'action'=>'weather'之类的东西:我正在运行1.3,但是完整的URL确实可以工作。当通过/widget/links/访问时,问题在于索引操作。我想我不想要一个小部件插件。是的,那是一个打字错误。我纠正了它。小部件/links/出现的错误是:错误:找不到WidgetController。看来我的索引/默认路由是主要问题。除了默认页面路由之外,我没有其他路由。请记住,这仅适用于从/widget/controller\u name访问时的索引操作。您是对的,它假定小部件是控制器,并试图使用控制器名称作为操作。显然,这不是我们想要的行为。我想添加一个路由器::connect'/widget/:controller/',数组'action'=>'index';那么,根据注释中的URI/路由组合判断,路由语句中是否存在尾随的斜杠/可能和以前一样是问题所在。路由可能相当挑剔。为了处理这两种情况,您可能必须提供两条路线。我最终不得不命名这些路线,因为我的路线太模糊了。最后它看起来像这个路由器::connect'/widget/links/:action/*',数组'controller'=>'links','action'=>'index';