如何通过CakePHP中的passedArgs传递回车

时间:2014-03-12 17:44:48

标签: php cakephp parameter-passing

尝试将参数传递给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}更优雅}}

2 个答案:

答案 0 :(得分:1)

如上面评论中所述,建议不再在CakePHP2.x中使用命名参数。它们是一个错误的实现。 使用查询字符串代替解决编码周围的所有问题。

此外,查询字符串是CakePHP未来版本的方法,因此如果不再使用已弃用的功能,则可以避免额外的升级痛苦。

有关详细信息,请参阅this article

答案 1 :(得分:0)

换行的

\n - \r为回程---

这应该解决你的问题,但要注意那些需要用双引号才能工作。