【问题标题】:use controller method from model class in cakephp在 cakephp 中使用模型类中的控制器方法
【发布时间】:2011-09-29 14:15:48
【问题描述】:

在我的 cakephp 项目中,我使用模型类的 afterSave() 方法。在这个方法中,我想调用另一个位于 app_controller 文件中的方法。

class MyModel extends AppModel {

        var $name = 'MyModel';

        function afterSave($created) {

            $this->MyController->updateData();          
        }

}

这里updateData()位于app_controller文件中,由MyController控制器扩展。

上面的代码不起作用,所以在这种情况下我怎么能真正调用 updateData()..

请指导。

谢谢

【问题讨论】:

  • MVC 最佳实践指出模型不应该知道控制器。您是否应该不将updateData() 方法移动到模型层(即AppModel)。
  • 感谢 deizel,我想我应该遵循 MVC 指南,并且我已经更改了我的代码,不再使用 afterSave 方法.. 感谢您的正确指导..

标签: cakephp model


【解决方案1】:

强烈不建议这样做,但无论如何都可以这样做...您应该按照 deizel 的说法尝试并将该方法移至 AppModel 或任何其他特定模型...

你可以使用这个功能

App::import() 检查book here 看看如何使用它

在你的例子中:

class MyModel extends AppModel {

        var $name = 'MyModel';

        function afterSave($created) {
            App::import('Controller', 'My');
            $something = new MyController;
            $something->updateData();          
        }

}

这是将类加载到另一个不应该存在的地方的正确方法...您仍然可以使用 include 或 required 并创建该类的实例,因为这是 php。

【讨论】:

  • 谢谢,但我宁愿接受你的建议,不要遵循这种方法,所以在这种情况下我不会使用 afterSave。
猜你喜欢
  • 1970-01-01
  • 2011-12-05
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多