我对烘焙蛋糕模型有疑问。我正在烘焙模型作为插件的一部分。我通过在 PluginAppModel 类中包含所有逻辑来保持模型干燥。这使我可以根据应用程序的更改定期更改架构。
但是,每当我重新烘焙模型时,在我拥有的任何关联中,类名都是不正确的。例如,默认的 bake 命令将其输出为
public $hasMany = array(
'Item' => array(
'className' => 'Item',
什么时候应该
public $hasMany = array(
'Item' => array(
'className' => 'PluginName.Item',
IE。以插件名称为前缀。这是为了确保我可以移植我的插件。是否需要将标志发送到 bake 命令,以将其放在前面?我在文档中看不到任何内容。这是我当前使用的命令
cake bake model PluginName.Item -c myconn -p PluginName
非常感谢任何帮助!
更新 -
好的,这是一个令人讨厌的 hack,但现在就足够了。我这样覆盖了我的 PluginAppModel 中的构造函数类:
public function __construct(){
parent::__construct();
$this->append_plugin_name_to_classes();
}
public function append_plugin_name_to_classes(){
$associations = array('hasMany', 'belongsTo', 'hasOne', 'hasAndBelongsToMany');
foreach($associations as &$a):
if(!empty($this->{$a})):
foreach($this->{$a} as &$b):
if(isset($b['className'])):
$old = $b['className'];
$b['className'] = PLUGIN_NAME . "." . $old;
endif;
endforeach;
endif;
endforeach;
}
在上面的 PLUGIN_NAME 中,在 bootstrap.php 中设置为常量。我很确定这不是 MVC 的做法,但它现在让我摆脱了困境。我希望它有所帮助。