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

时间:2015-07-17 10:41:31

标签: php laravel-5

我已经搜索了很多我的要求,但我找不到适合我的解决方案。我正在使用laravel 5创建一个Web应用程序,我想将所有与管理员访问相关的控制器保存到controllers文件夹中的admin子文件夹中。为此,我在Laravel Controller Subfolder routing找到了很好的答案,但现在我关注的是将视图和模型保存在单独的文件夹中,这样就可以毫不费力地管理它们。例如,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
    }

?>

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

1 个答案:

答案 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',

我希望这会有所帮助。