gab*_*ulk 3 php laravel laravel-4 laravel-routing
我是Laravel的新手,在子目录方面遇到了麻烦.我想在controllers文件夹中创建一个admin文件夹,到目前为止它正在运行.但是当我尝试使用Laravel的Input类时,它说它无法找到它.
我的路线:
Route::group(array('prefix'=> 'admin', 'before' => 'auth.admin'), function() {
Route::resource('/users','Admin\\UsersController');
Route::resource('/products','Admin\\ProductsController');
Route::resource('/categories','Admin\\CategoriesController');
Route::resource('/orders','Admin\\OrdersController');
Route::resource('/reviews','Admin\\ReviewsController');
});
Run Code Online (Sandbox Code Playgroud)
产品控制器:
<?php namespace admin;
class ProductsController extends \BaseController {
protected $layout = 'master';
/**
* Instantiate a new ProductsController instance.
*/
public function __construct()
{
$this->beforeFilter('auth.admin');
}
/**
* Display a listing of the resource.
* GET /products
*
* @return Response
*/
public function index()
{
$input = Input::all(); //here is where it finds the error
Run Code Online (Sandbox Code Playgroud)
而composer.json自动加载:
"autoload": {
"classmap": [
"app/commands",
"app/controllers/",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/controllers/Admin"
]
},
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑:
我也尝试使用Input(和\ Input)并返回"Class'Facade'not found'错误,当我尝试时:
use \Illuminate\Support\Facades\Facade;
use Input;
Run Code Online (Sandbox Code Playgroud)
它仍然无法正常工作.
编辑2:
现在使用:
use Illuminate\Support\Facades\Input;
Run Code Online (Sandbox Code Playgroud)
并返回相同的错误.
编辑3: @ChristopherRathgeb建议修改,现在它没有找到产品型号.
回答:
在完成@ChristopherRathgeb建议的修改并将\添加到View和Input类(示例$input = \Input:all();)后,它工作了!现在要使用动作方法重定向到这些控制器我刚刚使用了动作(admin\ProductsController)并且它工作了!
感谢所有帮助过的人!
首先,您可以使用基于命名空间的路由组:
Route::group(['namespace'=>'admin','prefix'=> 'admin', 'before' => 'auth.admin'],function() {
Route::resource('/users','UsersController');
Route::resource('/products','ProductsController');
Route::resource('/categories','CategoriesController');
Route::resource('/orders','OrdersController');
Route::resource('/reviews','ReviewsController');
});
Run Code Online (Sandbox Code Playgroud)
接下来您的输入问题是您需要包含输入外观:
删除这个:
use \Illuminate\Support\Facades\Facade;
use Input;
Run Code Online (Sandbox Code Playgroud)
并将以下内容添加到文件的顶部:
use Illuminate\Support\Facades\Input;
Run Code Online (Sandbox Code Playgroud)
注意:这个答案使用PHP 5.4数组语法.如果您仍在使用php 5.3,请将[]替换为array().