2017-12-09 7 views
2

こんにちは私は、見出しのURLセグメントCAkephp3を取得する際に問題が発生しました。私は現在のURLからIDを取得したい。セグメントURLを取得する方法cakephp 3

私のURLがhttp://localhost/admin/financial_agreements/edit/50 であると私は単にhttp://localhost/admin/financial_agreements/do_print/50 にリダイレクトしたいとしましょう:

var urlPrint = "<?=$this->Url->build(['controller' => 'financial_agreements', 'action' => 'do_print', 'I NEED ID FROM CURRENT'], true)?>"; 

私は

<?=debug($this->Url->build()); die();?> 

しかし、その生産をデバッグしようとします。admin/financial_agreements /編集/ 50

50で何が呼び出されましたか?私は私の "url-> build"の中に50を必要とします。urlPrint

ごめんなさい。

Anyhelpが評価されます。ありがとう。

答えて

3

リクエストオブジェクトを使用して、ビュー内のリクエストデータ(URLパラメータを含む)を取得できます。

はあなたのビューでこれを試してみてください:URL内のアクションの名前の後に渡されたすべての非命名パラメータの配列を返します

$this->request->getParam('pass') //CakePHP 3.4+

$this->request->params['pass'] // CakePHP 3.3

。例:/mycontroller/myaction/param1/param2。したがって、この例では$this->request->getParam('pass')[0 => 'param1', 1 => 'param2']のような配列を生成します。

ボーナス回答:URLのパラメータには、/mycontroller/myaction/some_name:some_valueのような名前を付けることもできます。この種の名前付きパラメータを取得するには、同じトリックを使用しますが、$this->request->getParam('named')を使用します( 'pass'ではなく 'named'を使用します)。

さらに詳しい情報: https://book.cakephp.org/3.0/en/controllers/request-response.html https://book.cakephp.org/3.0/en/development/routing.html#passed-arguments

(注:してください、マークとそれはあなたの問題を解決した場合、この答えを受け入れます)。

public function edit($id) { 
    $financialAgreement = $this->FinancialAgreements->get($id); 
    ... 
    $this->set(compact('financialAgreement')); 
} 

次にedit.ctpに、あなたは非常に単純$financialAgreement->idとして、現在のレコードのIDを取得することができますので、あなたのURLは以下となります。あなたの編集機能は、標準的な慣行に従って、あなたはこのような何かを持っているだろうと仮定すると

+0

ああ、私の日、おかあさんを保存してください。 –

+1

名前付きパラメータはCake 3では推奨されていません。代わりに '?some_name = some_value'のようなより多くの標準的なURLクエリ文字列を使用し、' $ this-> request-> getQuery( 'some_name') 'でそれらにアクセスすることができます。これは、@ YOMoralesが提供する同じリンクで議論されています。 –

+0

ありがとう、ええ、私は非難について忘れました。私はまだ名前付きparamsが好きです。 :P – YOMorales

2

$this->Url->build(['controller' => 'financial_agreements', 'action' => 'do_print', $financialAgreement->id], true) 
+0

ああ、これも動作します。 – YOMorales

関連する問題