如何从cakePHP中获取URL到模型的参数?

时间:2010-05-27 12:46:55

标签: php validation cakephp

让我说我有:

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

这是以某种方式在cakePHP中工作。现在我想要'参数'到底是什么。但在模型中。如何获取这些信息?

我不得不说有一个包含“下一步”按钮的公式,我想在 beforeValidate()中验证模型内部的输入。但是我必须知道用户在单击提交按钮时的页面。这个页面是'参数'。

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

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中,您将找到所有路由以及传递的部分。

标准的蛋糕网址格式通常如下所示,您将在路线中看到。     array('controller'=>'MyController', 'action'=>'MyAction', 'MyParam');

我似乎无法在Params的书中找到一个特定的页面,但有一个google周围的指南。

答案 2 :(得分:2)

模型(在MVC设计模式中)不应该直接访问任何外部变量。正确的方法是将该变量作为参数传递给Controller或View:

$myModelObj->doSth($getParameter);