2011-03-25 270 views
2

我想在我的网站上做一些自定义路由,但在一个非常愚蠢的问题上一直停留2天。我有以下的路由配置:未找到CakePHP路由URL!

Router::connect('/your-solution/add-comment/*', array('controller' => 'comments', 'action' => 'add')); 
Router::connect('/admin/your-solution/add-comment/*', array('controller' => 'comments', 'action' => 'add', 'admin' => true)); 

的问题是,当我尝试加载使用第二路径格式化的URL,它给了我没有找到404。 第一条规则正常工作。

对于这两个规则,我有一个单独的元素,包含一个表单,并指向格式化后的各自的规则。这两个操作的唯一参数是解决方案标识,该标识在通配符中“包含”。

可能是什么问题?非常感谢您的帮助!

编辑:

我发现了另一个奇怪的行为。当我访问/admin/your-solution/add-comment/3时,它会执行该操作。但是,如果我向该链接提交表单,则会显示一个空白页面,使用Firebug通知我该页面未找到。很奇怪... 另外,我有一条类似的编辑评论路线。加载编辑表格和保存表格工作...

回答

0

显然,问题一直存在于禁用的输入中。删除此元素后,表单提交正确并显示目标页面。

就我所知,为什么表单没有提交,如果它有一个禁用的输入呢?

+0

您是否在代码中使用安全组件? – JohnP 2011-03-26 09:53:11

+0

是的,我正在使用它。 – linkyndy 2011-03-26 12:49:12

+0

查看我的评论以上Linkyndy!这是因为SecurityComponent期望所有的输入都是使用FormHelper创建的(即:$ form-> input())。如果这是导致你麻烦的领域,你可以将它添加到$ disabledFields数组中。干杯! – fsodano 2011-03-26 15:33:57

5

你好吗?

为了看看到底为什么没有工作,去你/app/config/core.php并寻求这一行:

Configure::write('debug', 2); 

,并确保值设置为“2 ”。这样,它不会再给你一个404错误,但实际问题,因为在生产模式(调试设置为0),所有的错误被掩盖与404错误。

让我知道!

干杯!

+0

嗨。谢谢你问我,我很好。调试级别设置为2.事情是,它没有显示我明确的404错误,但显示我一个空白页面,当我查看Firebug时,它显示'页面未找到'错误。 – linkyndy 2011-03-25 20:06:33

+0

我编辑了我的问题,也许我发布了一些更有用的东西... – linkyndy 2011-03-25 21:51:30

+1

您是否使用安全组件?如果是这样,请尝试添加您的CommentsController方法“beforeFilter”,$ this-> Security-> validatePost = false;并看看它是否有效。如果它起作用,那是因为某些东西正在修改该组件的_token。更多[cakePHP](http://book.cakephp.org/view/1296/Security-Component) – fsodano 2011-03-25 22:38:29

1

在你core.php中一定

配置::写( 'Routing.prefixes',阵列( '管理员'));

在您的意见控制器,请确保您有

function admin_add() {...} 

也可以尝试格式化路由声明的其他方式。

Router::connect('/admin/your-solution/add-comment', array('controller' => 'comments', 'action' => 'add', 'admin' => true)); 

您的路线顺序也很重要。你可能想检查一下。

要调试加载URL时使用的路线,请尝试将此代码添加到您的app_controller.php文件中。

function __construct() { 
    $route = Router::currentRoute(); 
    pr($route); 
} 

这些只是一些提示,希望能帮助您前进。

+0

感谢所有这些提示!我有前两个。你发布的路由格式不包含任何额外的参数(如我需要的解决方案ID),因此它不起作用。我应该尝试什么其他替代路线格式?我想我已经尝试过所有可能的组合。我甚至尝试删除这个旁边的任何其他路线,仍然无法找到页面... – linkyndy 2011-03-25 21:42:09

+0

我编辑了我的问题,也许我发布了一些更有用的东西... – linkyndy 2011-03-25 21:51:02