【问题标题】:$this->params returns null in cakephp model$this->params 在 cakephp 模型中返回 null
【发布时间】:2013-10-13 23:31:33
【问题描述】:

我决定在一些模型的 beforeSave 中添加一些关于控制器和动作的额外数据,如下所示:

//in the model
public function beforeSave() {
        $this->data[$this->alias]['path'] = 'blah blan';
        debug($this->params);
        die(); //for debugging!
}

debug打印返回null!我使用的模型是 cmets 插件的 Comment 模型。我需要访问 params 来获取当前的控制器、动作和一些 url 参数。

确实,我打算将 cmets 插件列出 cmets 的方式从基于模型的方式更改为基于路径的方式,以解决需要多个动作的 cmets 依赖于同一模型的问题。

【问题讨论】:

  • 这可能是无法在$this->data 回调中使用$this->data 的情况。您是否尝试在模型的另一部分(或在控制器/视图中)使用它来查看您的数据是否存在?
  • @scrowler 是的,它在控制器中工作并返回一个数组。
  • 如果它在控制器中工作,那么问题是什么?
  • 我需要它在模型中工作。
  • 设置一个模型变量 - var $path; 然后在 beforeSave 添加 $this->path = 'blah blan'; - 并在模型内部使用它,从外部使用 $this->params

标签: php cakephp cakephp-model cakephp-2.4


【解决方案1】:

终于找到了解决办法:在Router对象方法getParams()

//in the model
public function beforeSave() {
        $this->data[$this->alias]['path'] = 'blah blan';
        debug(Router::getParams());
        die(); //for debugging!
}

它会打印出如下内容:

array(
    'plugin' => null,
    'controller' => 'qurans',
    'action' => 'view',
    'named' => array(
        'comment' => '0'
    ),
    'pass' => array(
        (int) 0 => '8'
    )
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多