我必須在CakePHP應用程序中重寫表單。該表格搜索汽車銷售廣告列表,並且非常複雜(~10個領域:模型,製造商,燃料類型等)。目前,該表格通過POST
發送,工作得很好。問題是我需要從搜索查詢中創建可收藏的網址,我在想什麼是完成此操作的最佳方法。用友好的URL提交CakePHP表單提交
我嘗試將'type' => 'get'
傳遞給$form->create()
方法,但這會生成一個類似於usercars/search/?model=...&[...]
的URL,並導致搜索中斷。
我希望URL類似於<some routing>/<Manufacturer>/<Model>/<Fuel>/<etc>
,也支持參數省略(即<some routing>/<Manufacturer>
列出來自給定製造商的所有汽車,即使其他參數丟失)。由POST
,目前這個工程。如果我只選擇其中一個參數,它會給我正確的結果。
我不知道是否有任何方法來確定蛋糕從表單提交中建立漂亮的網址,並保持與控制器中處理輸入的方式的兼容性。我已經通過了文檔,並沒有找到任何方法來做到這一點。
我已經有兩個選擇:
- 重寫控制器行動來支持,而不是與
$this->data
工作,構建目標與PARAMS搜索方法的路線,做在控制器的beforeFilter()
方法的重定向功能參數到與路線相對應的URL。 - 在搜索表單頁面上執行javascript以構建URL +上面的處理方式。
你會推薦什麼?
感謝您的回答;)。你有什麼想法如何讓表單提交給_that_網址? – 2010-04-05 23:28:01
您必須以通常的方式提交表格。然後在控制器操作中,您必須將提交的數據「翻譯」爲友好的網址並重定向到該網址。 – dhofstet 2010-04-06 05:09:57
是的,你可以做到如何dhofster建議。這裏有一篇描述這種方法的麪包店文章: http://bakery.cakephp.org/articles/view/form-posting-with-_get-parameters 我推薦使用該組件,如果你要去那條路線。如果您希望避免在每個表單提交中進行重定向,則可以使用javascript在表單提交中動態創建操作url。我在原始答案中添加了一個javascript(原型)示例。 – JoeyP 2010-04-06 15:16:29