Как получить параметры из URL к модели в cakePHP? - PullRequest
1 голос
/ 27 мая 2010

скажем, у меня есть:

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

Это как-то работает в cakePHP. Теперь я хочу узнать, что именно является «параметром». Но внутри модели. Как получить эту информацию?

Я должен сказать, что есть формула, включающая кнопку «Далее», и я хочу проверить ввод внутри Модели в beforeValidate () . Но я должен знать, на какой странице пользователь находился во время нажатия кнопки «Отправить». Эта страница является «параметром».

Ответы [ 3 ]

4 голосов
/ 03 января 2013

Router::getParams() доступен отовсюду и дает

    [plugin] => 
    [controller] => leads
    [action] => step1
    [named] => Array()
    [pass] => Array()
    [url] => Array(
            [ext] => html
            [url] => someurl/post-1
    )

http://api.cakephp.org/2.3/class-Router.html#_getParams

3 голосов
/ 27 мая 2010

В CakePHP есть два типа параметров: вы передали параметры и назвали параметры. Переданный параметр, как показано в вашем примере, будет передан как часть 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'

Я бы порекомендовал получить параметры в вашем контроллере и вызвать методы модели с их передачей.

Например

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

Что касается того, как это работает, вам нужно взглянуть на файл маршрутов. В вашем app/config/routes.php вы найдете все маршруты и какие части пройдены.

Стандартный формат URL торта обычно выглядит следующим образом, как вы увидите на маршрутах. array('controller'=>'MyController', 'action'=>'MyAction', 'MyParam');

Кажется, я не могу найти определенную страницу в книге о параметрах, но у меня есть руководства по поиску в Google.

2 голосов
/ 27 мая 2010
Модель

(в схеме проектирования MVC) не должна иметь прямого доступа к любым внешним переменным. Правильный способ - передать эту переменную в качестве параметра из Controller или View:

$myModelObj->doSth($getParameter);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...