我需要帮助我的Laravel应用程序的结构.
我想要的基本上是这个结构:
> 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() {});
但如何将它们结合起来呢?
解决方法:
对于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');
最后是观点:
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就足够了,我个人建议使用这种结构,因为你可以通过更多控制来跟踪你的视图.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。