【问题标题】:How to pass a parameter with a forward slash in CakePHP?如何在 CakePHP 中使用正斜杠传递参数?
【发布时间】:2014-05-03 04:41:10
【问题描述】:

我有一个控制器:

<?php
App::uses('AppController', 'Controller');
/**
 * FundingYears Controller
 *
 */
class FundingYearsController extends AppController {

/**
 * Scaffold
 *
 * @var mixed
 */
    public $scaffold;

}

当尝试通过 URL 传递参数(主键)时,因为它有一个“/”,它会炸掉它:

http://localhost/funding_years/view/12%2F13

有什么办法可以使用路由来逃避这种情况吗?

【问题讨论】:

  • 看到这篇文章了吗? stackoverflow.com/questions/15529872/…
  • 对 url 部分仅使用 a-z0-9-_ 等。对于需要通过 url 传递的不是 ascii 字符的所有参数,您应该使用查询字符串。特别是如果它们包含 URL 中的特殊字符,例如斜线。这些会自动正确编码和解码。见details。您还可以在此处将要用作传递参数的内容 sluggify - 这样的 slug 可以通过行为自动创建。
  • Router::connect('/funding_years/view/**', array('controller' => 'funding_years', 'action' => 'view'));不起作用,最终结果为:localhost/funding_years/view/12%2F1312%2F13。使用 CakePHP v2.4.5
  • 你用的是什么版本的 Cake?

标签: php cakephp routing


【解决方案1】:

您可以尝试以下示例代码:

$link1 = array('controller'=>'funding_years','action'=>'view');
$link2  = explode('/','12/13');
$link =array_merge($link1,$link2);
echo $this->Html->url($link);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 2011-03-23
    • 2011-08-27
    • 2016-06-13
    • 2020-05-09
    • 2013-02-23
    • 1970-01-01
    相关资源
    最近更新 更多