我正在使用cakephp 1.3
,我想搜索包含/ in string的记录。
我已经通过参数如下。
搜索参数如下。
Array
(
[controller] => indents
[action] => admin_index
[named] => Array
(
[pr_no_data] => pr
)
[pass] => Array
(
[0] => no
[1] => dip
[2] => 002
)
[prefix] => admin
[admin] => 1
[plugin] =>
[form] => Array
(
)
[url] => Array
(
[url] => admin/indents/index/pr_no_data:pr/no/dip/002
)
[isAjax] =>
)
因为你们都可以看到我的url params包含admin/indents/index/pr_no_data:pr/no/dip/002
,现在我想搜索url中定义的pr_no。
我怎样才能做到这一点。?
因为搜索/记录传递值作为传递参数。
请帮帮我。
非常感谢。
答案 0 :(得分:1)
正如您在数组中看到的那样,CakePHP将部分数据视为传递参数。在pr_no_data
命名变量中,您会看到它引用pr
作为其值。
[named] => Array
(
[pr_no_data] => pr
)
但是,由于斜杠,数据中的剩余字符串被识别为传递的参数。所以它将它们作为URL的一部分读取,而不是pr_no_data
变量。
[pass] => Array
(
[0] => no
[1] => dip
[2] => 002
)
您需要了解的是在将变量添加到URL之前如何生成该变量。也许你可以将它改成管道分隔列表或逗号,分隔列表,这样它就不会干扰URL并混淆cakephp。
pr|no|dip|002
pr,no,dip,002
一旦cakephp收到数据,您可以根据需要将它们转换回斜杠:
$passed = preg_replace('/,/', '/', $this->params['named']['pr_no_data']);
答案 1 :(得分:0)
尝试使用urlencode对命名参数值进行编码。
网址应为
admin/indents/index/pr_no_data:pr%2Fno%2Fdip%2F002
如果您使用Html助手创建URL,那么CakePHP应该为您编码值。
echo $this->Html->url(array(
'prefix'=>'admin',
'controller'=>'indents',
'action'=>'index',
'pr_no_data'=>'pr/no/dip/002'
));