如何在Laravel 4的app文件夹之外制作控制器,模型,视图? [英] How to make controllers, models, views outside app folder in Laravel 4?
问题描述
我想制作一个这样的结构文件夹:
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-autoload
,php 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屋!