Cakephp烘焙模型 - 前缀未添加到关联

时间:2013-03-13 15:17:31

标签: cakephp model

我遇到烘烤蛋糕模型的问题。我正在将模型作为插件的一部分进行烘焙。我通过在PluginAppModel类中使用所有逻辑来保持模型干燥。这允许我根据应用程序的更改定期更改架构。

但是,无论何时我重新烘焙模型,在我拥有的任何关联中,className都是不正确的。例如,默认的bake命令将其输出为

    public $hasMany = array(
    'Item' => array(
        'className' => 'Item',

什么时候应该

    public $hasMany = array(
    'Item' => array(
        'className' => 'PluginName.Item',

即。以插件名称为前缀。这是为了确保我可以移植我的插件。是否有一个我需要发送到bake命令的标志,以便将其添加到前面?我在文档中看不到任何内容。这是Im目前使用的命令

cake bake model PluginName.Item -c myconn -p PluginName

任何帮助都非常感谢!

UPDATE -

好的,这是一个讨厌的黑客,但它现在已经足够了。我在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的做法,但它现在让我脱离了一个洞。我希望它有所帮助。

0 个答案:

没有答案
相关问题