簡體   English   中英

如何從URL獲取參數到cakePHP中的模型?

[英]How to get parameters from the URL to the model in cakePHP?

假設我有:

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

這以某種方式在cakePHP中工作。 現在,我想知道確切的“參數”是什么。 但是在模型內部。 如何獲得這些信息?

我必須說有一個包含“下一步”按鈕的公式編寫器,我想在beforeValidate()中驗證模型內部的輸入。 但是我必須知道單擊提交按鈕時用戶在哪個頁面上。 此頁面為“參數”。

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

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周圍有指南。

模型(以MVC設計模式)不應直接訪問任何外部變量。 正確的方法是將該變量作為參數從Controller或View傳遞:

$myModelObj->doSth($getParameter);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM