2013-01-15 18 views
1

我正在使用cakephp 1.3,我想搜索包含/ in字符串的記錄。 我已經通過參數如下。 搜索參數如下。命名參數被傳遞爲URL的一部分,因爲斜槓

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] => 
) 

,你都可以看到我的網址參數包含admin/indents/index/pr_no_data:pr/no/dip/002,現在我想在URL中定義搜索pr_no。 我該怎麼做。? 因爲搜索/記錄傳遞值作爲傳遞參數。 請幫幫我。

非常感謝。

回答

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之前生成該變量。也許你可以把它改成pipe |分隔的列表或逗號,分隔的列表,所以它不會干擾URL並混淆cakephp。

pr|no|dip|002 
pr,no,dip,002 

一旦CakePHP的接收數據,然後你可以在需要時將其轉換回斜線:

$passed = preg_replace('/,/', '/', $this->params['named']['pr_no_data']); 
0

嘗試使用urlencode對命名參數值進行編碼。

URL應該

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' 
)); 
+0

我公司通過形式記錄搜索提交故其文本value..so我怎麼能做到這一點。 ..因爲我已經試過urlencode它顯示我404 –

+0

我假設這個URL是表單的行爲。那個動作屬性如何設置? – cgTag

相關問題