比方說,我有:如何從cakephp中的URL中獲取參數到模型?
http://some-domain/application/controller/action/parameter
這在某種程度上是CakePHP的工作。現在我想知道'參數'究竟是什麼。但在模型中。如何獲得這些信息?
我必須說有一個包含'Next'按鈕的公式,我想驗證beforeValidate()中的模型輸入。但是我必須知道用戶在點擊提交按鈕時在哪個頁面上。這個頁面是'參數'。
比方說,我有:如何從cakephp中的URL中獲取參數到模型?
http://some-domain/application/controller/action/parameter
這在某種程度上是CakePHP的工作。現在我想知道'參數'究竟是什麼。但在模型中。如何獲得這些信息?
我必須說有一個包含'Next'按鈕的公式,我想驗證beforeValidate()中的模型輸入。但是我必須知道用戶在點擊提交按鈕時在哪個頁面上。這個頁面是'參數'。
有兩種類型的參數在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');
我似乎無法在關於Params的書中找到特定的頁面,但有一個谷歌周圍的指南。
模型(MVC設計模式),不應該有任何外部變量的直接訪問。正確的方法是將變量傳遞從控制器或參數查看:
$myModelObj->doSth($getParameter);
這就是實際內部發生我猜:-) – Andre 2010-05-27 13:01:31
Router::getParams()
可從任何地方,並給出
[plugin] =>
[controller] => leads
[action] => step1
[named] => Array()
[pass] => Array()
[url] => Array(
[ext] => html
[url] => someurl/post-1
)
在蛋糕1.2.6,傳遞的參數是'$這個 - > PARAMS [ '通']'。 – joshuarh 2013-09-11 16:28:58
爲什麼'找到( '所有')',而不是'找到( '第一')'?希望在搜索ID時只有一個匹配項。 – Blazemonger 2013-09-12 17:57:59