如何在Laravel 4的app文件夹之外制作控制器,模型,视图? [英] How to make controllers, models, views outside app folder in Laravel 4?

查看:83
本文介绍了如何在Laravel 4的app文件夹之外制作控制器,模型,视图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to make a structure folder like this:

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

我更新了composer.json:

I updated 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 时,出现错误.任何人都可以向我展示如何解决此问题?

And then run 2 commands: composer dump-autoload, php artisan dump-autoload and create a route: Route::get('/admin', 'AdminController@showWelcome');. But when I hit http://localhost/laravel/admin, I get an error. Anyone can show me how to fix this problem?

推荐答案

像这样在您的composer.json中注册PSR-4命令

Register a PSR-4 command in your composer.json like this

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

然后在root/admin/controllers/AdminController.php中,必须为该类命名空间并调用您扩展或使用的任何此类

Then in root/admin/controllers/AdminController.php you have to namespace the class and call any class that you extend or use like this

<?php namespace Root\Admin\Controllers;

use BaseController;

class AdminControllers extends BaseController {
}

别忘了运行作曲家dump-autoload

Don't forget to run composer dump-autoload

为了能够使用除app文件夹以外的其他文件夹中的视图,您必须注册视图,我通常是通过这样的服务提供商来完成的

to be able to use the views in other folders other than app folder you'll have to register the views, I usually do it via a service provider like this

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

In root/admin create a folder called Providers

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

Inside it create a file AdminServiceProvider.php and write in this

<?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

Now go into app/config/app.php and scroll down to providers and before the array ends add this Root\Admin\Providers\AdminServiceProvider

保存并运行composer dump-autoload

现在在int Root命名空间控制器中,您可以像这样调用任何视图

Now in int Root namespace Controllers you can call any view like this

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

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

or if you need to access the view from inside a folder

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

这篇关于如何在Laravel 4的app文件夹之外制作控制器,模型,视图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆