laravel4.2 可以使用模块化modules吗?

我有前台跟后台两个独立的项目,现在的写法是,一些models处理需要写两遍,非常的麻烦,想把两套程序整合到一起,但是网上关于laravel的modules资料很少。大家给点建议,能让models公用也行。加粗文字
已邀请:

Mr_Jing

赞同来自: zhuzhichao

models是公用的,其实你只需要在controller中分层了好了。在controller目录下建立一个目录admin,专门用户存放后台的控制器。建议使用命名空间。这样后台的控制器就是App/Admin/UserController类似的,比AdminUserController这样的类名要好得多。

FiveSay - 成武

赞同来自: Adger

实际上 composer 虽然定位是依赖管理,但其本身就是一个极佳的模块化解决方案。

rocet

赞同来自:

app
---modules
    ---ServiceProvider.php
    ---Admin
        ---AdminServiceProvider.php
        ---routes.php
        ---config
        ---controllers
            ---AdminController.php
        ---views
        ---......
    ---......


---------------------------------------------------------------------------------------------
app\modules\ServiceProvider.php

<?php
namespace App\Modules;
abstract class ServiceProvider extends \Illuminate\Support\ServiceProvider
{
public function boot()
{
    if ($module = $this->getModule(func_get_args())) {
        $this->package('app/' . $module, $module, app_path() . '/modules/' . $module);
    }
}

public function register()
{
    if ($module = $this->getModule(func_get_args())) {
        $this->app['config']->package('app/' . $module, app_path() . '/modules/' . $module . '/config');
        foreach (\Config::get('app.aliases') as $alias => $source) {
            class_alias($source, 'App\Modules\\' . $module . '\Controllers\\' . $alias);
        }

        $routes = app_path() . '/modules/' . $module . '/routes.php';
        if (file_exists($routes)) require $routes;
    }
}

public function getModule($args)
{
    $module = (isset($args[0]) and is_string($args[0])) ? $args[0] : null;
    return $module;
}
}

---------------------------------------------------------------------------------------------
app\modules\Admin\AdminServiceProvider.php

<?php
namespace App\Modules\Admin;
class AdminServiceProvider extends \App\Modules\ServiceProvider
{
public function register()
{
    parent::register('Admin');
}

public function boot()
{
    parent::boot('Admin');
}
}

---------------------------------------------------------------------------------------------
app\modules\Admin\controllers\AdminController.php

<?php
namespace App\Modules\Admin\Controllers;

class AdminController extends \BaseController {
.....
}

---------------------------------------------------------------------------------------------
app\config\app.php

'providers' => array(
.....
'App\Modules\Admin\AdminServiceProvider',
),          

---------------------------------------------------------------------------------------------
composer.json

"autoload": {
"classmap": [
    .....
    "app/modules",
]
}

---------------------------------------------------------------------------------------------
composer dump-autoload --optimize

要回复问题请先登录注册