1

私は使用してcakephp 1.3いて、文字列に / を含むレコードを検索したいと考えています。私は以下のようにパラメータを渡しました。検索パラメータは以下の通りです。

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パラメーターに含まれていることがわかるように、URLadmin/indents/index/pr_no_data:pr/no/dip/002で定義されているpr_noを検索したいと思います。これどうやってするの。?渡されたパラメータとして渡された値を検索/記録するためです。私を助けてください。

どうもありがとう。

4

2 に答える 2

1

配列でわかるように、CakePHP はデータの一部を渡されたパラメーターとして認識します。名前付き変数では、それが値としてpr_no_data参照prされていることがわかります。

[named] => Array
   (
       [pr_no_data] => pr
   )

ただし、データ内の残りの文字列は、スラッシュがあるため、渡されたパラメーターとして認識されます。したがって、pr_no_data変数ではなく、URL の一部としてそれらを読み取ります。

 [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']);
于 2013-01-16T16:44:17.397 に答える
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'
));
于 2013-01-15T07:45:00.013 に答える