我正在使用cakePHP而陷入困境。我想将一个命名参数传递给包含正斜杠的动作。例如
http://www.test.com/claim/index/user:rLbu78h2RpVwLTy/bki3pK1NkkXhCCaYfQ/zXDIfZR4=
基本上“rLbu78h2RpVwLTy / bki3pK1NkkXhCCaYfQ / zXDIfZR4 =”是一个参数,但蛋糕只识别它的第一部分直到第一个斜线。
打印指定的params数组时,我得到:
Array
(
[user] => rLbu78h2RpVwLTy
)
如何逃避正斜杠并允许蛋糕接受它作为命名参数的一部分?
谢谢
答案 0 :(得分:6)
虽然可以使用命名参数(/foo/this-is:a-named-parameter/
),但最好坚持使用普通的url位置/路径参数和/或GET
参数。随着时间的推移,使用命名参数传递信息已被证明不是一个很好的解决方案。
如果您修改了您正在使用的网址格式,例如:
/claim/index/<user token>
然后,您可以使用trailing star route来捕获/index/
之后在单个变量中发生的所有事情:
Router::connect(
'/claim/index/**',
array('controller' => 'claims', 'action' => 'index')
);
通过这种方式,您在索引操作中收到/index/
之后的内容并不重要:
// Request to /index/rLbu78h2RpVwLTy/bki3pK1NkkXhCCaYfQ/zXDIfZR4=
function index($user) {
// $user === 'rLbu78h2RpVwLTy/bki3pK1NkkXhCCaYfQ/zXDIfZR4='
}