php - Laravel 应用程序的结构(API、后台、前台)

标签 php laravel laravel-5 gulp

我的 Laravel 应用程序的结构需要帮助。

我想要的基本上是这个结构:

  • 应用程序接口(interface)
  • 管理面板
  • 公共(public)网站

我开始构建我认为非常正确的文件夹结构:

app/
   Http/Controllers/
       API/
       Back/
       Front/
resources/
   assets/
       js/
          back/
          front/
       sass/
          back/
          front/
   views/
       back/
       front/

问题

Elixir:运行 gulp 后如何避免后端的库或 Assets 包含在前端的代码中,反之亦然?

Views:如何在 Laravel View 中使用命名空间?例如,给定 views/front/ 中的 pages1,即 extending一些 page2。我希望 Blade 在编译时自动views/front 目录中搜索 page2(而不是在 views/back 中搜索示例)。

路由:如何将路由与 Controller 的命名空间进行匹配?我知道我们可以做到

Route::group(['domain' => 'example.com'], function() {});

还有

Route::group(['namespace' => 'Admin'], function() {});

但是如何组合它们呢?

最佳答案

对于Elixir,您可以使用Gulp 模块,然后根据您的需要使用mix 变量来分离 Assets 。在这个例子中,gulp 会将 script.jsscript2.js 合并到一个名为 public/backend/final.js 的最终文件中。

// backend assets
elixir(function(mix){
    mix.scripts([
        'js/back/script.js',
        'js/back/script2.js',
    ], 'public/backend/final.js', 'resources/assets');

    // here you can declare another group of assets using 'mix'

});

对于 Controller 命名空间,您编辑 app/Providers/RouteServiceProvider 文件并将每个命名空间声明为:

public function map(Router $router)
{
    // backend namespace
    $router->group(['namespace' => 'App\Http\Controllers\BackEnd'], function ($router) {
        require app_path('Http/routes-backend.php');
    });

    // frontend namespace
    $router->group(['namespace' => 'App\Http\Controllers\FrontEnd'], function ($router) {
        require app_path('Http/routes-frontend.php');
    });

    // api namespace
    $router->group(['namespace' => 'App\Http\Controllers\API'], function ($router) {
        require app_path('Http/routes-api.php');
    });
}

现在,创建三个文件:

  • app/Http/routes-backend.php> 后端路由
  • app/Http/routes-frontend.php> 前端路由
  • app/Http/routes-api.php> API 路由

例如,如果您需要声明一个新的后端 Controller ,您可以在 app/Http/routes-backend.php 中详细说明:

Route::get('dashboard', 'DashboardController@show');

最后浏览量:

How to use namespaces in Laravel views ? For example, pages1 in views/front/ blade-extending page2 will automatically search page2 inside view/front directory.

那是不可能的,如果没有明确的引用,page1 是无法自动加载 page2 的。使用 @extends 就足够了,我个人建议使用这种结构,因为您可以通过更多控制来跟踪您的 View 。

关于php - Laravel 应用程序的结构(API、后台、前台),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32976124/

相关文章:

php - 将日期转换为 T Z 格式

PHP Gearman 任务不返回 jobHandle

javascript - Auth laravel5-angular-material-starter 的本地存储

mysql - Laravel Cron php_network_getaddresses : getaddrinfo failed

php - 将 $variable 或 $_POST 值插入 mysql 表

PHP foreach 循环数组

Laravel 4 对带有 Puppet 的 Vagrant 框的权限

php - Laravel 中的依赖注入(inject)

laravel - Vagrant laravel box, guest 机进入无效状态

php - Laravel + React,通过 Laravel 身份验证使用 api