2017-10-31 8 views
0

これまでは、URLのリクエストパラメータとして整数値のみを扱ってきました。

今、私は、たとえばなどスペースを含む文字列で作業する必要があります。 「XYZ 666 888-VCT」

私は私のビュースクリプトのうち、ルートとパラメータを送信:

<a href="<?= $this->url('pcb', ['action' => 'index', 'id' => $rs->Part_Number]) ?>">PCB</a> 

私はコントローラのアクション内でそれを取得しようとします:

$id = $this->params()->fromRoute('id'); 

この場合、文字列値をキャッチする正しい方法はありますか?

編集: ここに追加私のルーティング偶然に:

'pcb' => [ 
           'type' => Segment::class, 
           'options' => [ 
             'route' => '/pcb[/:action[/:id]]', 
             'constraints' => [ 
              'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
               'id'  => '[a-zA-Z][a-zA-Z0-9_-]*', 
             ], 
             'defaults' => [ 
               'controller' => Controller\PcbController::class, 
               'action'  => 'index', 
             ], 
           ], 

         ], 

は、私は次のように私のURLが見え

をルーティングすることにより

要求されたURLが一致しませんでした常に得る: ... pcb/index/3441 99901 B 03 2519 xyz

問題はスペースであると確信していますので、もう少し詳しく質問してください。解決しよう

+0

、そうではありませんか? – gsc

+0

ルートオプション配列の 'constraints'キーが失敗する可能性があります。整数値は '[0-9] *'のようなものを使用します。他のルートから設定します。 – avy

+0

ファイルがインポートされ、この文字列が唯一の識別情報であるため、文字列でなければなりません。法的理由により、このファイルを変更したり、追加の列を取得することはできません。 –

答えて

0

: ルーティングの私の正規表現が間違っていたが、私はそれを変更:それは `デフォルトでSTRING`さ

'id'  => '[a-zA-Z0-9\-\. /]*', 
関連する問題