CakePHP常用型号

我有3-4个运行相同Cake库的应用程序,每个应用程序都有自己的控制器,模型和视图。 我最近发现模型中的很多方法在项目之间重叠,我想知道是否有可能获得app模型(不是app_model.php)来扩展cake文件中的模型 例如
app1
    controllers
    models
        model_1.php
        model_2.php
    views
app2
    controllers
    models
        model_1.php
        model_3.php
    views
cake
    controllers
    models
        model_1.php
    views
我希望这是有道理的     
已邀请:
您不应该真正修改CakePHP应用程序以从另一个CakePHP应用程序读取代码。您的所有应用程序代码都应该封装在该应用程序中。 如果你发现自己在多个应用程序中拥有相同的代码,这听起来像是将代码提取到CakePHP插件中的完美候选者! 查看CakePHP文档以创建插件。 插件将拥有自己的控制器,模型,视图,现在(从CakePHP 1.3开始)它拥有自己的资产(CSS,Js,图像等)。您可以将插件添加到您的应用程序并修改您的路由和链接,以便最终用户注意到您的应用程序没有任何区别。
Router::connect('/your/routes/*', array('plugin' => 'your_plugin', 'controller' => 'controller_in_plugin'));

echo $this->Html->link('Your Link', array('plugin' => 'your_plugin', 'controller' => 'controller_in_plugin', 'action' => 'action_in_plugins_controller'));
    
如果你正在使用CakePHP 1.3,那么你可以修改你的bootstrap.php文件:
App::build(array(
    ...
    'models' =>  array('/var/www/app1/models/', '/var/www/cake/models/'),
    ...
));
但我认为你必须以不同的方式重命名它们,即你不能在两个地方都有model_1.php。但是你的cake / models文件夹中有
vehicle.php
,你的cars_app / models文件夹中有
car.php
bike.php
在你的bikes_app / models文件夹中,模型扩展了Vehicle模型。 我没有测试过,但试一试!     
您可以尝试使用符号链接来处理常见模型。 这种方式即使目录中有多个文件,它们都共享相同的根实现。     
正如RabidFire所提到的,您首先必须指定一个额外的模型路径。然后,要从这样的模型继承,您必须使用子模型导入文件中的相应模型:
App::import('Model', 'ParentModel');

class ChildModel extends ParentModel {
    ...
}
    

要回复问题请先登录注册