Forms CakePHP-定制表单操作的最佳方法?

Forms CakePHP-定制表单操作的最佳方法?,forms,cakephp,cakephp-2.2,Forms,Cakephp,Cakephp 2.2,我有一个搜索表单,它使用搜索控制器/模型 echo $this->Form->create('Search', array('action' => 'query', 'type' => 'get')); ... echo $this->Form->end(); 但是默认情况下,表单提交到“/searches/query”。如何将搜索页面的URL改为/search/query 我真的不想使用.htaccess重写,如果可能的话,因为这看起来有点混乱。希望有一

我有一个搜索表单,它使用搜索控制器/模型

echo $this->Form->create('Search', array('action' => 'query', 'type' => 'get'));
 ...
echo $this->Form->end();
但是默认情况下,表单提交到
“/searches/query”
。如何将搜索页面的URL改为
/search/query

我真的不想使用.htaccess重写,如果可能的话,因为这看起来有点混乱。希望有一个整洁的蛋糕做这件事的方式


我认为这可以通过bootstrap.php中的自定义屈折符规则来实现,但我不确定如何实现。

难道没有办法说:

echo $this->Form->create('Search', array('action' => 'search/query', 'type' => 'get'));
然后为这个设置路由器

$this->Router->('search/query', array('controller' => 'searches', 'action' => 'query'));

只要使用路由器。在路由文件中,添加:

Router::connect('/search/:action/*', array('controller' => 'searches'));
Router::connect('/search/*', array('controller' => 'searches', 'action' => 'index'));

阅读有关路由器的更多信息。

是的,这是我尝试的第一件事,但操作将只是第二部分。您似乎无法指定要使用的控制器或完整URL。因此,它以
action=“/searches/search/query”
的形式出现。您是否说明了您正在使用的蛋糕版本?2.2,尽管我不认为有什么新的东西会有所帮助。这将使两个重定向,并以某种方式增加执行时间。不是吗?不,这不是重定向。这并不意味着会发生重定向。这样做的目的是,in将指示CakePHP核心在您请求以下URL时调用
SearchesController
www.myapp.com/search/query
。抱歉,这不是答案,尽管每个人都投票支持您。我知道如何使用路线,而且我已经设置了这条路线。如果用户在地址栏中键入
/search/index
,然后自己去那里就可以了,但这并不能解决我的表单仍然提交到
/search/query
的问题,表单应该提交到
/search/query
。如果不是的话,那么就有别的问题了。这是正确的方法。显示您的整个路由文件和带有操作的控制器片段。