首页 文章

在子文件夹中定义Laravel 5路径并通过控制器显示它

提问于
浏览
4

我有Laravel 5.2.45应用程序 . 我有这样的控制器结构:

App
    Http
        Controllers
            Admin
                AdminController.php

我在AdminController.php里面

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Requests;

class AdminController extends Controller 
{

/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct() 
{
    $this->middleware('auth');
    $this->middleware('is.admin');
}

public function index()
{
    return view('admin.home');
}

}

我有这样的视图文件夹结构:

views
    admin
        home.blade.php

在我的routes.php里面我有

Route::get('/admin/home', 'Admin\AdminController@index');

所以当我输入时,我正试图得到它... / admin / home browser在admin文件夹中显示home.blade.php .

我的routes.php:

Route::auth();

Route::get('/', 'FrontController@index');

Route::get('/home', 'FrontController@index');

Route::get('/add_user', 'FrontController@user');

Route::group(['prefix', 'admin', 'namespace' => 'Admin'], function() {
    Route::get('home', 'AdminController@index');
});

3 回答

  • 1

    route definition 中缺少前缀 . 纠正它看起来像这样:

    <?php
       Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function() {
           Route::get('/home', 'AdminController@index');
       });
    

    现在,在浏览器中尝试base_url / admin / home,它应该可以正常工作 .

  • 0

    您可以将路由组与命名空间和前缀选项一起使用 .

    Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function() {
        Route::get('home', 'AdminController@index');
    });
    

    在这里, prefix 允许您指定应始终位于组内路由中的URL的开头 . 因此,您放入该组的任何路线都应以 admin 开头 .

    命名空间允许您为引用的控制器指定文件夹/命名空间 . 因此,所有控制器必须位于 App\Http\Controllers\Admin 命名空间和 app/Http/Controllers/Admin 文件夹中 .

  • 1

    您需要删除前导斜杠,使其变为:

    Route::get('admin/home', 'Admin\AdminController@index');

相关问题