我已经搜索了很多我的要求,但我找不到适合我的解决方案。我正在使用laravel 5创建一个Web应用程序,我想将所有与管理员访问相关的控制器保存到controllers文件夹中的admin子文件夹中。为此,我在Laravel Controller Subfolder routing找到了很好的答案,但现在我关注的是将视图和模型保存在单独的文件夹中,这样就可以毫不费力地管理它们。例如,laravel 5允许我们以下面的格式保留控制器的所有视图
现在我想要这样的东西
我也正在为模型寻找相同类型的结构,因为laravel 5直接将模型提供到App文件夹中。我在网上发现你可以直接在App中为模型创建文件夹,你只需要在模型中指定命名空间,如App Directory中admin文件夹的下面代码。
<?php
namespace App\Models\Admin;
class Users extends Model{
// do some stuff here
}
?>
任何帮助都可以让我进一步了解mu项目。
答案 0 :(得分:5)
您可以完全自由地使用应用程序的结构。如果您的观点是
resources/views/admin/mycontroller/index.blade.php
并且您的控制器被放入app/Http/Controllers/Admin/MyController.php
文件中,然后您可以这样使用视图:
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
class MyController extends Controller {
public function index() {
return view('admin.controller.index');
}
}
关于您的模型,Laravel再次灵活并使用PSR-4自动加载,因此您的命名空间结构必须与目录结构相匹配。如果要将Users
模型放在App\Models\Admin
命名空间中,只需创建此文件夹结构:
app/
Models/
Admin/
Users.php
...
resources/
vendor/
在Users.php
文件中,输入您的模型类:
<?php
namespace App\Models\Admin;
use Illuminate\Database\Eloquent\Model;
class Users extends Model
{
// ...
}
请注意Users
的命名空间与目录结构匹配:
App
已映射到app/
目录App\Models
已映射到app/Models
App\Models\Admin
已映射到app/Models/Admin
App\Models\Admin\Users
映射到app/Models/Admin/Users.php
如果您的Users
课程旨在取代标准的Laravel User
Eloquent模型,那么您还必须更改config/auth.php
配置文件并替换该行
'model' => 'App\User',
与
'model' => 'App\Models\Admin\Users',
我希望这会有所帮助。