我想要的基本上是这个结构:
> API
>管理员面板
>公共网站
我开始构建这个文件夹结构,我认为这是非常正确的:
app/ Http/Controllers/ API/ Back/ Front/ resources/ assets/ js/ back/ front/ sass/ back/ front/ views/ back/ front/
问题
Elixir:在运行gulp后,如何避免后端的库或资产包含在前端代码中,反之亦然?
视图:如何在Laravel视图中使用命名空间?例如,给定views / front /中的pages1,这是extending一些page2.我希望Blade在编译时自动搜索view2内部的view / front目录(例如,不在views / back中).
路由:如何将路由与Controller的命名空间进行匹配?我知道我们能做到
Route::group(['domain' => 'example.com'],function() {});
并且
Route::group(['namespace' => 'Admin'],function() {});
但如何将它们结合起来呢?
解决方法
// 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' });
对于控制器名称空间,您可以编辑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的路线
例如,如果您需要声明一个新的后端控制器,请在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就足够了,我个人建议使用这种结构,因为你可以通过更多控制来跟踪你的视图.