1

我对烘焙蛋糕模型有疑问。我正在烘焙模型作为插件的一部分。我通过在 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 的做法,但它现在让我摆脱了困境。我希望它有所帮助。

4

0 回答 0