2017-12-09 7 views
2

Hallo Ich habe Probleme beim Abrufen URL-Segment CAkephp3 in Sicht. Ich möchte die ID von der aktuellen URL erhalten.Wie bekomme ich eine Segment URL cockephp 3

Können sagen, meine URL http://localhost/admin/financial_agreements/edit/50 ist und ich umleiten wollen http://localhost/admin/financial_agreements/do_print/50 einfach:

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

Ich versuche debug

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

Aber seine Produkte: admin/financial_agreements/edit/50

was heißt 50? Ich brauche diese 50 in meinem "url-> build" urlPrint

Entschuldigung für schlechtes Englisch.

Anyhelp wird zu schätzen wissen. danke.

Antwort

3

Sie können das Request-Objekt verwenden, um Anforderungsdaten (einschließlich URL-Parameter) in Sichten abzurufen.

Probieren Sie dies aus Ihrer Sicht:

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

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

, die ein Array alles nicht benannte Parameter zurück, die in der URL nach der Aktion Namen übergeben wurde. Beispiel: /mycontroller/myaction/param1/param2. In diesem Beispiel erzeugt $this->request->getParam('pass') ein Array wie: [0 => 'param1', 1 => 'param2'].

Bonus Antwort: Sie können auch Parameter in der URL "benennen", wie: /mycontroller/myaction/some_name:some_value. Um diese Art von benannten Parametern abzurufen, würden Sie denselben Trick anwenden, aber verwenden Sie: $this->request->getParam('named') (Verwenden Sie das Argument 'named' anstelle von 'pass').

Weitere Informationen: https://book.cakephp.org/3.0/en/controllers/request-response.html https://book.cakephp.org/3.0/en/development/routing.html#passed-arguments

(Anmerkung: Bitte, markieren und diese Antwort akzeptieren, wenn es Ihr Problem gelöst).

+0

ahh du mein Tag sparen, danke. –

+1

Beachten Sie, dass benannte Parameter ab Cake 3 veraltet sind. Stattdessen können Sie mehr Standard-URL-Abfragezeichenfolgen wie '? Einige_name = einige_wert 'verwenden und auf sie mit' $ this-> request-> getQuery (' some_name ') 'zugreifen. Dies wird auf den gleichen Links @ YOMorales zur Verfügung gestellt. –

+0

Danke, ja, ich habe die Missbilligung vergessen. Ich mag immer noch benannte Params. : P – YOMorales

2

Unter der Annahme, dass Ihre Editierfunktion Standardpraktiken folgt, werden Sie etwas davon haben:

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

Dann in edit.ctp, können Sie die ID des aktuellen Datensatzes als $financialAgreement->id, sehr einfach so bekommen Sie Ihre URL wird mit

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

Oh ja, das funktioniert auch. – YOMorales

Verwandte Themen