Laravel 4子目录控制器不加载Input类

时间:2014-08-19 18:46:11

标签: php laravel laravel-4 laravel-routing

我是Laravel的新手并且在子目录方面遇到了麻烦。 我想在controllers文件夹中创建一个admin文件夹,到目前为止它还在工作。但是当我尝试使用Laravel的输入类时,它说它无法找到它。

我的路线:

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');

});      

产品控制器:

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

composer.json自动加载:

"autoload": {

        "classmap": [
            "app/commands",
            "app/controllers/",
            "app/models",
            "app/database/migrations",
            "app/database/seeds",
            "app/tests/TestCase.php",
            "app/controllers/Admin"
        ]
    },

谢谢!

修改

我还尝试使用Input(和\ Input)并返回&#34; Class&#39; Facade&#39;找不到&#34;错误,当我尝试时:

use \Illuminate\Support\Facades\Facade;
use Input;

它仍然无效。

编辑2:

现在使用:

use Illuminate\Support\Facades\Input;

并返回相同的错误。

编辑3: @ChristopherRathgeb是否修改过,现在它没有找到产品型号。

答案:

在完成@ChristopherRathgeb建议的修改并将\添加到View和Input类(例如$input = \Input:all();)后,它工作了!现在要使用动作方法重定向到这些控制器我刚刚使用了动作(admin \ ProductsController)并且它工作了!

感谢所有帮助过的人!

2 个答案:

答案 0 :(得分:6)

首先,您可以使用基于命名空间的路由组:

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');
});

接下来您的输入问题是您需要包含输入外观:

删除它:

use \Illuminate\Support\Facades\Facade;
use Input;

并将以下内容添加到文件顶部:

use Illuminate\Support\Facades\Input;

注意:这个答案使用php 5.4数组语法。如果您仍在使用php 5.3,请将[]替换为array()。

答案 1 :(得分:1)

Input类导入您正在使用的命名空间。

<?php namespace admin;

use \Illuminate\Support\Facades\Input;

    class ProductsController extends \BaseController {
.....

或者从名称空间中调用Input

public function index()
{
    $input = \Illuminate\Support\Facades\Input::all(); //here is where it finds the error