2014-03-25 148 views
2

我有一个控制器:如何在CakePHP中使用正斜杠传递参数?

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

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

} 

当尝试通过URL传递参数(主键),因为它有一个“/”在里面,它弹一下:

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

有什么方法可以使用路线来逃避这个吗?

+1

看到这个帖子? http://stackoverflow.com/questions/15529872/cakephp-allow-forward-slash-as-named-parameter-value – arilia

+2

只使用a-z0-9-_等URL部分。您应该使用查询字符串来查找所有需要通过url传递的非ascii字符的参数。特别是如果他们包含特殊URL的字符,如斜杠。这些会自动正确编码和解码。参见[details](http://www.dereuromark.de/2013/05/04/passed-named-or-query-string-params/)。你也可以在这里使用传递参数缓慢地使用你想要的东西 - 这样一个slug可以通过行为自动创建。 – mark

+0

Router :: connect('/ funding_years/view/**',array('controller'=>'funding_years','action'=>'view'));无法正常工作:http:// localhost/funding_years/view/12%2F1312%2F13。使用CakePHP v2.4.5 – Jenski

回答

0

你可以试试下面的示例代码:

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