让我说我有:
http://some-domain/application/controller/action/parameter
这是以某种方式在cakePHP中工作。现在我想要'参数'到底是什么。但在模型中。如何获取这些信息?
我不得不说有一个包含“下一步”按钮的公式,我想在 beforeValidate()中验证模型内部的输入。但是我必须知道用户在单击提交按钮时的页面。这个页面是'参数'。
答案 0 :(得分:4)
Router::getParams()
随处可用,并提供
[plugin] =>
[controller] => leads
[action] => step1
[named] => Array()
[pass] => Array()
[url] => Array(
[ext] => html
[url] => someurl/post-1
)
答案 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);