views:

150

answers:

3

hi there,

let's say i have:

http://some-domain/application/controller/action/parameter

This is somehow working in cakePHP. Now I want to now what exactly 'parameter' is. But inside the Model. How to get to this information?

I have to say that there is a formular including a 'Next' Button and I want to validate the input inside of the Model in beforeValidate(). But I have to know on which page the user was at the time of clicking the submit button. This page is 'parameter'.

A: 

A simple:

debug($this);

Inside of the Model! And there is the parameter with it's value!

vlad
+2  A: 

Model (in MVC design pattern) shouldn't have direct access to any external variables. The proper way is to pass that variable as a parameter from Controller or View:

$myModelObj->doSth($getParameter);
Crozin
that's what actually happens internally i guess :-)
vlad
+3  A: 

There are two type of parameter in CakePHP, you have passed parameters and named parameters. A passed parameter is as shown in your example and will be passed as part of the url.

http://example.com/controller/action/passed_param
echo $this->params['passed'][0] // 'passed_param'

http://example.com/controller/action/name:param
echo $this->params['named']['name'] // 'param'

I would recommend getting the parameters in your controller and calling model methods with them passed through.

Such as

$this->Model->find('all', array('conditions'=>array('id'=>$this->params['passed'][0])));

As to how it's working, you will want to have a look at your routes file. In your app/config/routes.php you will find all the routing and which parts are passed.

The standard cake url format is usually as follows, as you'll see in the routes. array('controller'=>'MyController', 'action'=>'MyAction', 'MyParam');

I can't seem to find a specific page in the book on Params, but have a google around for guides.

DavidYell