【问题标题】:cakephp how to refer to the model with a variable in the controllercakephp 如何在控制器中使用变量引用模型
【发布时间】:2011-04-23 18:59:03
【问题描述】:

我想在控制器中引用 $this->Model-> ...。但我想让函数通用,那么我该如何动态使用呢?我试过 $this->$modelname 但当然没有用。

CRUD 函数对所有模型和所有控制器都是通用的,在某些情况下会被覆盖。

示例:两个控制器,每个型号一个 - 信函和电子邮件。有信函控制器和电子邮件控制器。每个都有 CRUD 功能。这些视图本质上是相同的,除了模型为每个视图跟踪不同的信息(例如,带有 send_method 的信函)。它们之间唯一不同的是字段。我已经自动化了那部分,但控制器基本上是相同的,除了一些小的变化。我希望有一个父类并让它使用特定模型的模型名称,因此我不必在每次进行更改时都对每个控制器进行更改。但在某些情况下,我需要参考 $this->Model-> ... 而我不知道该怎么做。

【问题讨论】:

  • 你试过 $this->{$modelname} 吗?
  • 提供更多细节。你想做什么?该函数是所有模型还是所有控制器的通用函数?
  • @chustar 不,我没有:括号有什么作用?
  • 括号是我认为使用变量名引用对象成员的方式。如:$obj->{'member_name'}。

标签: oop cakephp model


【解决方案1】:

在澄清OP的基础上完全重写

在 letters_controller.php 的顶部添加:

$this->defaultModel = 'Letter';

并在 emails_controller.php 中添加:

$this->defaultModel = 'Email';

在任一控制器中,要引用模型,请调用

$this->{$this->defaultModel}->function();

【讨论】:

  • 我认为 OP 想要做的是能够改变他们是在运行中调用 ModelA 还是 ModelB。
【解决方案2】:

听起来您正在尝试重新发明轮子:您查看过CakePHP Scaffolding 部分吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多