Extract URL value with CakePHP (params)

37,092

Solution 1

Use this way

echo $this->params['url']['id'];

it's here on cakephp manual http://book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Controllers.html#the-parameters-attribute-params

Solution 2

You didn't specify the cake version you are using. please always do so. not mentioning it will get you lots of false answers because lots of things change during versions.

if you are using the latest 2.3.0 for example you can use the newly added query method:

$id = $this->request->query('id'); // clean access using getter method

in your controller. http://book.cakephp.org/2.0/en/controllers/request-response.html#CakeRequest::query

but the old ways also work:

$id = $this->request->params->url['id']; // property access
$id = $this->request->params[url]['id']; // array access

you cannot use named since

$id = $this->request->params['named']['id'] // WRONG

would require your url to be www.example.com/tester/retrieve_test/good/id:012345. so the answer of havelock is incorrect

then pass your id on to the form defaults - or in your case directly to the save statement after the form submitted (no need to use a hidden field here).

$this->request->data['Listing']['vt_tour'] = $id;
//save

if you really need/want to pass it on to the form, use the else block of $this->request->is(post):

if ($this->request->is(post)) {
    //validate and save here
} else {
    $this->request->data['Listing']['vt_tour'] = $id;
}

Solution 3

Alternatively you could also use the so called named parameters

$id = $this->params['named']['id'];
Share:
37,092
learner23
Author by

learner23

Updated on July 05, 2022

Comments

  • learner23
    learner23 almost 2 years

    I know that CakePHP params easily extracts values from an URL like this one:

    http://www.example.com/tester/retrieve_test/good/1/accepted/active
    

    I need to extract values from an URL like this:

    http://www.example.com/tester/retrieve_test?status=200&id=1yOhjvRQBgY
    

    I only need the value from this id:

    id=1yOhjvRQBgY

    I know that in normal PHP $_GET will retrieve this easally, bhut I cant get it to insert the value into my DB, i used this code:

    $html->input('Listing/vt_tour', array('value'=>$_GET["id"], 'type'=>'hidden'))
    

    Any ideas guys?

  • learner23
    learner23 over 11 years
    Hey, thanks for the answer. I do get the value with $this->params['url']['id']; but I cant seem to get the value inserted into my DB. This is what I am using $html->input('Listing/vt_tour', array('value'=>$this->params['url']['id'], 'type'=>'hidden')); And i'm using Cake 1.1
  • mark
    mark over 11 years
    seriously? cake1.1? well, that you really should have mentioned earlier than just now. I just answered thorougly for the newer versions of cake. and you really should upgrade to 2.x