【问题标题】:CakePHP allow forward slash as named parameter valueCakePHP 允许正斜杠作为命名参数值
【发布时间】:2013-03-20 16:55:10
【问题描述】:

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

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

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

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

Array
(
    [user] => rLbu78h2RpVwLTy
)

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

谢谢

【问题讨论】:

  • 关键问题是:如何创建您的网址?缺少 PHP 代码。你为什么不指定你的蛋糕版本?
  • cakephp 2.1.1 和 URL 是电子邮件地址的 mcrypt。
  • 您仍然没有在此处发布任何 PHP 代码。请注意,如果操作正确,CakePHP 通常会自动对 url 进行编码。还应该注意的是,在大多数情况下,最好使用查询字符串而不是命名参数(这将在未来的版本中被弃用!)。
  • @AD7six 非常感谢您,这就是我正在寻找的答案 :) ... 就像一个魅力。如果您想将其作为答案,我会将其标记为正确。再次感谢。
  • 我第二个@mark 评论。我认为他在他的博客上写了一篇完整的帖子来证明这一点......read here

标签: cakephp


【解决方案1】:

不要使用命名参数

虽然您可以使用命名参数 (/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='
}

【讨论】:

猜你喜欢
  • 2013-02-23
  • 2018-04-02
  • 1970-01-01
  • 2011-03-23
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多