當嘗試將參數傳遞給CakePHP中的控制器的另一個函數時出現問題。如何通過CakePHP中的passedArgs傳遞迴車
首先,我收集場從視圖形式的文本區域,在控制器功能($this->request->data[...]
)。一旦我有這個參數(字符串),我想把它傳遞給另一個功能在同一個控制器。沒問題,我使用重定向並傳遞參數爲$this->redirect(array('action' => 'function2', 'param1'=>$data1, 'param2'=>$data2...
,並在function2
與$this->passedArgs
。
問題是當該字符串參數(從textarea的收集)在其內部具有一個換行(回車)。看起來像CakePHP不接受像myproject/function2/param1:hi**%0D%0A**bye/param2:...
這樣的URL路由 - 我的意思是裏面有特殊的十六進制字符,比如%0D%0A
(換行符)。
所以,問題是:有什麼辦法,當它包含任何特殊的十六進制字符像回車來傳遞這些參數?
我心裏也通過它願意通過?param1=data1
得到參數 - 我已經測試它和它的作品,但我認爲這是更優雅傳遞參數的函數,而不是通過GET
傳遞。
不要在2.x中使用命名參數,請使用查詢字符串。看[這裏](http://www.dereuromark.de/2013/05/04/passed-named-or-query-string-params/)爲什麼。 – mark
@mark哇!在那個博客中很酷的解釋!正是我想要的,知道爲什麼不能傳遞具有特殊字符的命名參數(「命名參數的編碼可以打破URL」)以及改爲使用什麼。似乎我不是唯一一個有這個問題的人:D。另外它還說在CakePHP的下一個版本中,named params將會過時,所以我將不得不改變這個參數出現的位置來查詢字符串。這些只是GET參數,只有Cake以「標準化」的方式管理它們,不是嗎?獲取它們作爲'$ this-> request-> query'等等。非常感謝你,你幫了我很大的忙(把它寫成投票的答案)。 –