1

我正在使用 cakePHP 并陷入困境。我想将命名参数传递给包含正斜杠的操作。例如

http://www.test.com/claim/index/user:rLbu78h2RpVwLTy/bki3pK1NkkXhCCaYfQ/zXDIfZR4=

基本上 "rLbu78h2RpVwLTy/bki3pK1NkkXhCCaYfQ/zXDIfZR4=" 是一个参数,但蛋糕只识别它的第一部分,直到第一个斜线。

打印命名参数数组时,我得到:

Array
(
    [user] => rLbu78h2RpVwLTy
)

如何转义正斜杠并允许 cake 接受它作为命名参数的一部分?

谢谢

4

1 回答 1

6

不要使用命名参数

虽然您可以使用命名参数 ( /foo/this-is:a-named-parameter/),但最好坚持使用普通的 url 位置/路径参数和/或GET参数。随着时间的推移,事实证明,使用命名参数传递信息并不是一个很好的解决方案。

使用尾随星路线

如果您修改您使用的网址格式,例如:

/claim/index/<user token>

然后,您可以使用尾随星形路由/index/来捕获单个变量中发生的所有内容:

Router::connect(
    '/claim/index/**',
    array('controller' => 'claims', 'action' => 'index')
);

/index/这样,在您的索引操作中收到它之后会发生什么并不重要:

// Request to /index/rLbu78h2RpVwLTy/bki3pK1NkkXhCCaYfQ/zXDIfZR4=

function index($user) {
    // $user === 'rLbu78h2RpVwLTy/bki3pK1NkkXhCCaYfQ/zXDIfZR4='
}
于 2013-03-21T09:17:49.713 回答