我需要帮助我的Laravel应用程序的结构。
我想要的基本上是这样的结构:
- API
- <
- 管理面板/gh>
- 公共网站
我开始建立这个文件夹结构,我认为这是非常正确的:
app/
Http/Controllers/
API/
Back/
Front/
resources/
assets/
js/
back/
front/
sass/
back/
front/
views/
back/
front/
Elixir:我如何避免后端库或资产被包含在前端的代码,反之亦然运行gulp
后?
Views:如何在Laravel视图中使用命名空间?例如,给定pages1
在views/front/
中,这是对page2
的一些扩展。我希望刀片在编译时自动在views/front
目录内搜索page2
(而不是在views/back
中)。
Routes:如何匹配路由与控制器的命名空间?我知道我们可以做到
Route::group(['domain' => 'example.com'], function() {});
Route::group(['namespace' => 'Admin'], function() {});
但是如何将它们组合起来呢?
对于Elixir,您可以使用Gulp
模块,然后根据您的需要使用mix
变量来分离资产。在这个例子中,gulp将把script.js
和script2.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'
});
对于控制器命名空间,编辑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');
view :
如何在Laravel视图中使用名称空间?例如,views/front/blade-extending page2目录下的pages1会自动搜索view/front目录下的page2。
这是不可能的,没有显式引用,page1
无法自动加载page2
。使用@extends
就足够了,我个人建议使用这种结构,因为你可以用更多的控制来跟踪你的视图。