尝试将参数传递给CakePHP中我控制器的另一个函数时遇到问题。
首先,我在控制器函数($this->request->data[...]
)中从视图中的表单的textarea中收集一个字段。一旦我有了这个参数(字符串),我想将它传递给同一个控制器中的另一个函数。没问题,我使用重定向并将参数作为$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
传递它就像获取参数一样 - 我已经测试了它并且它有效,但我认为将参数传递给函数而不是通过{{1}更优雅}}
答案 0 :(得分:1)
如上面评论中所述,建议不再在CakePHP2.x中使用命名参数。它们是一个错误的实现。 使用查询字符串代替解决编码周围的所有问题。
此外,查询字符串是CakePHP未来版本的方法,因此如果不再使用已弃用的功能,则可以避免额外的升级痛苦。
有关详细信息,请参阅this article。
答案 1 :(得分:0)
\n
-
\r
为回程---
这应该解决你的问题,但要注意那些需要用双引号才能工作。