Laravel 5将视图和模型保存在资源视图目录中的单独文件夹中

Man*_*rma 3 php laravel-5

我已经搜索了很多我的要求,但我找不到适合我的解决方案.我正在使用laravel 5创建一个Web应用程序,我想将所有与管理员访问相关的控制器保存到controllers文件夹中的admin子文件夹中.为此,我在Laravel Controller子文件夹路由中找到了很好的答案,但现在我关注的是将视图和模型保存在单独的文件夹中,以便可以毫不费力地管理它们.例如,laravel 5允许我们以下面的格式保留控制器的所有视图

  • 资源
    • 意见
      • 布局
      • controllername(用于控制器特定的视图文件夹)
        • index.blade.php

现在我想要这样的东西

  • 资源
    • 意见
      • 布局
      • 管理
        • controllername(用于控制器特定的视图文件夹)
          • index.blade.php

我也在为模型看同样的结构,因为laravel 5直接将模型提供到App文件夹中.我已经在网上发现你可以直接在App中为模型创建文件夹,你只需要在模型中指定命名空间,如App Directory中admin文件夹的代码.

<?php

    namespace App\Models\Admin;

    class Users extends Model{
    // do some stuff here
    }

?>
Run Code Online (Sandbox Code Playgroud)

任何帮助都可以让我进一步了解mu项目.

Mar*_*nte 5

您可以完全自由地使用应用程序的结构.如果你的观点是

resources/views/admin/mycontroller/index.blade.php
Run Code Online (Sandbox Code Playgroud)

并且您的控制器被放入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');
    }
}
Run Code Online (Sandbox Code Playgroud)

关于您的模型,Laravel再次灵活并使用PSR-4自动加载,因此您的命名空间结构必须与目录结构相匹配.如果要将Users模型放在App\Models\Admin命名空间中,则只需创建此文件夹结构:

app/
    Models/
        Admin/
            Users.php
...
resources/
vendor/
Run Code Online (Sandbox Code Playgroud)

Users.php文件中,放置您的模型类:

<?php
namespace App\Models\Admin;

use Illuminate\Database\Eloquent\Model;

class Users extends Model
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

请注意,命名空间Users与目录结构匹配:

  • App映射到app/目录
  • App\Models 被映射到 app/Models
  • App\Models\Admin 被映射到 app/Models/Admin
  • 最后App\Models\Admin\Users映射到app/Models/Admin/Users.php

如果您的Users类旨在替换标准的Laravel Eloquent User模型,那么您还必须更改config/auth.php配置文件并替换该行

'model' => 'App\User',
Run Code Online (Sandbox Code Playgroud)

'model' => 'App\Models\Admin\Users',
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助.