Lar*_*een 5 php laravel laravel-4
我想在我的Laravel 4软件包中安装控制器,但我无法使路由工作.
我已经按照Laravel 4文档中的包说明进行操作,并将routes.php文件与非控制器路由一起使用.
有人可以给我一些关于如何让包控制器在Laravel 4中工作的说明,非常感谢.
提前致谢.
拉尔斯
// EDIT:
// routes.php
Route::get('admin', 'Package::AdminController@index'); // Does not work
Route::get('admin', function(){ // Works fine
return 'Dashboard';
})
Run Code Online (Sandbox Code Playgroud)
Kev*_*ine 10
我不知道你的具体情况,也不知道这是解决这个问题的"正确"方法,但是由于我遇到了同样的问题,我想我会分享我是如何解决它的.
我把我的包控制器放在controllers子目录中,这样我的目录结构如下所示:
/src
/Vendor
/Package
PackageServiceProvider.php
/config
/controllers
/lang
/migrations
/views
/tests
/public
Run Code Online (Sandbox Code Playgroud)
然后,我将controllers文件夹添加到我的包的composer.json自动加载类映射中.
{
"name": "kevin-s-perrine/my-first-packge",
"description": "",
"authors": [
{
"name": "Kevin S. Perrine",
"email": "removed@somewhere.com"
}
],
"require": {
"php": ">=5.3.0",
"illuminate/support": "4.0.x"
},
"autoload": {
"classmap": [
"src/migrations",
"src/controllers"
],
"psr-0": {
"KevinSPerrine\\MyFirstPackage": "src/"
}
},
"minimum-stability": "dev"
}
Run Code Online (Sandbox Code Playgroud)
最后,我composer dump-autoload在包的根目录中运行,然后在routes文件中按名称引用控制器.
Route::get('myfirstpackage', 'MyFirstPackageHomeController@getIndex');
Run Code Online (Sandbox Code Playgroud)
您还需要引用控制器及其命名空间
Route::get('/admin', 'PackageNS\Package\Controllers\AdminController@getIndex');
Run Code Online (Sandbox Code Playgroud)
甚至
Route::controller('PackageNS\Package\Controllers\AdminController', 'admin');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5938 次 |
| 最近记录: |