如何在Laravel 4中制作app文件夹外的控制器,模型和视图?

时间:2015-04-19 04:21:57

标签: php laravel-4

我想制作一个这样的结构文件夹:

root/
  admin/
     controllers/
       AdminController.php
       BaseController.php
     models/
     views/
  app/
  ... etc

我更新了composer.json:

"autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "admin/controllers",
            "admin/models",
            "admin/views",
            "app/database/migrations",
            "app/database/seeds",
            "app/tests/TestCase.php"
        ]
    },

然后运行2个命令:composer dump-autoloadphp artisan dump-autoload并创建路线:Route::get('/admin', 'AdminController@showWelcome');。但是当我点击http://localhost/laravel/admin时,我收到错误。任何人都可以告诉我如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

在composer.json中注册PSR-4命令,如下所示

"psr-4" : {
        "root\\" : "YOUR_ROOT_FOLDER"
    }

然后在root / admin / controllers / AdminController.php中你必须命名该类并调用你扩展或使用的任何类

<?php namespace Root\Admin\Controllers;

use BaseController;

class AdminControllers extends BaseController {
}

不要忘记运行composer dump-autoload

编辑:为了能够使用app文件夹以外的其他文件夹中的视图,你必须注册视图,我通常是通过像这样的服务提供商来做的

在root / admin中创建一个名为Providers的文件夹

在其中创建一个文件AdminServiceProvider.php并写入此

<?php namespace Root\Admin\Providers;

use Illuminate\Support\ServiceProvider;

class AdminServiceProvider extends ServiceProvider {

    public function register() {
        //
    }

    public function boot() {
       \View::addNamespace('admin', __DIR__ . '/../views/');
    }
}

现在转到into app/config/app.php并向下滚动到提供商,在数组结束之前添加此Root\Admin\Providers\AdminServiceProvider

保存并运行composer dump-autoload

现在在int根命名空间控制器中,您可以调用任何类似的视图

return View::make('admin::NAME_OF_YOUR_VIEW');

或者如果您需要从文件夹中访问视图

return View::make('admin::NAME_OF_YOUR_FOLDER.NAME_OF_YOUR_VIEW');