Php 路由到子文件夹中的控制器在Laravel 4中不工作

Php 路由到子文件夹中的控制器在Laravel 4中不工作,php,controller,routes,laravel,laravel-4,Php,Controller,Routes,Laravel,Laravel 4,当我遇到这个问题时,我正在将我的Laravel 3应用程序更新为Laravel 4 我尝试过的路线: Route::get('backend/login', 'backend/UserController@login'); Route::get('backend/login', 'backend.UserController@login'); 目前,在Laravel4Beta1中,您可以“仅”使用名称空间 例如,控制器文件中的示例:app/controllers/backend/UserCon

当我遇到这个问题时,我正在将我的Laravel 3应用程序更新为Laravel 4

我尝试过的路线:

Route::get('backend/login', 'backend/UserController@login');
Route::get('backend/login', 'backend.UserController@login');

目前,在Laravel4Beta1中,您可以“仅”使用名称空间

例如,控制器文件中的示例:app/controllers/backend/UserController.php

<?php namespace Controllers\Backend;

use Illuminate\Routing\Controllers\Controller;

class UserController extends Controller {

    // Note extends Controller and not BaseController

    // Your stuff
}
?>
class AdminDashboardController extends AdminController {

/**
 * Display a listing of the resource.
 *
 * @return Response
 */
    public function getIndex()
    {
    return View::make('admin/dashboard');
    }
    }

因此,在文件app/routes.php中:

<?php
Route::get('backend/login', 'Controllers\Backend\UserController@login');
我建议这样做

Route::group(array('prefix' => 'backend'), function() {
    // Responds to Request::root() . '/backend/user'
    Route::resource('login', 'UserController');
});
在这里查看更多信息


你也可以把你的后端/管理面板放在一个软件包里。《思考的果实:)

我几个小时前也遇到了类似的问题,我不得不对它进行一点处理才能让它正常工作

路线:

Route::group(array('prefix' => 'admin'), function() {
    Route::resource('/', 'admin\DashboardController');
});
在“控制器/管理”中,我放置了仪表板控制器:

namespace admin;

use Illuminate\Support\Facades\View;

class DashboardController extends \BaseController {

    public function index()
    {
        return View::make('admin/dashboard');
    }

}

这在拉威尔4号身上起了关键作用。希望您觉得它足够有用。:)

app/controllers目录中的我的管理员控制器

class AdminController extends BaseController {
/**.
 * @return \AdminController
 */
    public function __construct()
    {

    }
}
现在我在controllers文件夹中有一个名为admin的文件夹,即app/controllers/admin,我在那里有另一个名为AdminDashboardController.php的控制器

<?php namespace Controllers\Backend;

use Illuminate\Routing\Controllers\Controller;

class UserController extends Controller {

    // Note extends Controller and not BaseController

    // Your stuff
}
?>
class AdminDashboardController extends AdminController {

/**
 * Display a listing of the resource.
 *
 * @return Response
 */
    public function getIndex()
    {
    return View::make('admin/dashboard');
    }
    }
最后是我的Route.php文件

Route::group(array('prefix' => 'admin'), function()
{
    # Admin Dashboard
    Route::controller('/', 'AdminDashboardController');
 });

希望这对您有所帮助。:-)

如本文所述,使用Laravel 4.1,您可以指定要在一组路由上使用的名称空间,如下所示:


我一直在使用它,而且非常好,它帮助您保持代码更干净,更容易理解。试试看

如果您要使用Laravel 4,也许您应该看看这个:您可以指定要在一组路由上使用的名称空间,如下所示:

因此,在您的示例中:

Route::group(array('prefix' => 'backend', 'namespace' => 'backend'), function()
{

    Route::get('login', 'UserController@login');

});
它就像一个符咒:)


我一直在使用它,而且非常好,它帮助您保持代码更干净,更容易理解。试试看

你更新了你的自动加载文件了吗?(composer dump autoload)是的,自动加载文件已更新,但无法解决问题。您是得到404还是得到更有用的错误?如果出现错误,请将其发布到此处好吗?另外,您的控制器是否在命名空间中?不,控制器不在命名空间中。仍不工作:路由:路由::get('backend/login',Controllers\backend\UserController@login'); 类(在app/controllers/backend/UserController.php中):好的,正如我所说的,注意:“'Class UserController extensed Controller'”而不是“'Class UserController extensed BaseController'”哼,这里的示例代码a为您提供了工作:/。不要忘记在添加/删除任何控制器后运行“composer dump autoload”:很高兴为您提供帮助,玩得开心w/laravel now:)Ok“composer dump autoload”完成了操作,但现在我遇到以下错误:FatalErrorException:错误:在这行代码中找不到类“controllers\Backend\View”:返回视图::make('Backend.user.login');这很有帮助。你拯救了这一天。