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


Laravel 5 keep views and models in separate folder in resources views directory

我已经为我的要求搜索了很多,但我没有找到适合我的工作解决方案。我正在使用laravel 5创建一个web应用程序,在那里我想保持所有控制器这是相关的管理访问到控制器文件夹中的管理子文件夹。为此,我在Laravel控制器子文件夹路由上找到了很好的答案,但现在我关心的是将视图和模型保存在单独的文件夹中,以便它们可以轻松管理。例如,laravel 5允许我们将控制器的所有视图保存在以下格式

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

现在我想要这样写

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

我也在寻找与laravel 5相同的模型结构,将模型直接提供到App文件夹中。我在网上找到了一个地方,你可以直接在App中为模型创建文件夹,你只需要在模型中指定命名空间,就像下面的代码在App目录中的管理文件夹。

<?php
    namespace App'Models'Admin;
    class Users extends Model{
    // do some stuff here
    }
?>

任何帮助都将使我的项目走得更远。

您对应用程序的结构有完全的自由。如果你的视图是

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

希望这对你有帮助。