首页 > 解决方案 > 路由错误由于我的路由中的组前缀

问题描述

在我的路由中,如果我删除 {page} 前缀,它完全可以正常工作,但是当我输入它时会出现错误。对于其他它工作正常,但它不适用于这条路线: Route::get('/{categories}', 'AdminVisible\CostIncludeController@index'); 我的管理页面控制器:

    public function index($page)
    {
        $page = Page::where('Pages_Slug_Name',$page)->firstorFail();
        $pages = Page::all();
        return view('admin.pages.page',[
            'page' => $page,
        ],compact('pages'));
    }

我的成本包含控制器:

    public function index($categories){
        $pages = Page::all();
        $packages = Package::where('slug',$categories)->first();
        return view('admin.pages.costinclude',[
            'packages' => $packages,
        ],compact('pages'));    
    }

我的路线:

Auth::routes(['register' => false,'login' => false]);
Route::prefix('admin')->group(function() {
    Route::get('/')->name('login')->uses('Auth\LoginController@showLoginForm');
    Route::post('/')->name('login')->uses('Auth\LoginController@login');
    Route::get('/dashboard', 'AdminVisible\HomeController@index')->name('admin.dashboard');
    Route::prefix('pages')->group(function() {
        Route::get('/','AdminVisible\AdminPageController@pages')->name('pages');
        Route::prefix('{page}')->group(function() {
            Route::get('/','AdminVisible\AdminPageController@index')->name('page');
            Route::get('/banner', 'AdminVisible\BannerController@index');
            Route::get('/why-with-us', 'AdminVisible\WhyWithUsController@index');
            Route::get('/testimonials', 'AdminVisible\TestimonialsController@index');
            Route::get('/about', 'AdminVisible\AboutController@index');
            Route::get('/about-why-with-us', 'AdminVisible\AboutWhyWithUsController@index');
            Route::get('/general-information', 'AdminVisible\PackageController@index');
            Route::get('/package-program', 'AdminVisible\PackageController@index');
            Route::get('/cost-exclude', 'AdminVisible\PackageController@index');
            Route::prefix('cost-include')->group(function() {
                Route::get('/', 'AdminVisible\PackageController@index');
                Route::get('/{categories}', 'AdminVisible\CostIncludeController@index');
            });
        });
    }); 
});

我的 Blade.php 文件:

@extends('layouts.app')
@section('style')
    <link href="{{ asset('css/Admin/sql-data-viewer.css') }}" rel="stylesheet">   
    <style></style>
@endsection
@section('content')
    <section class="data-viewer">
      <div class="d-flex justify-content-between">
        <h3>Select Package to change</h3>
        <a href="#"><button type="button" class="btn add-data text-white rounded-pill">Add &nbsp;<i class="fas fa-plus"></i></button></a>
      </div>
      <table>
          <thead>
              <tr class="data-head">  
                <td scope="col" style="width: 5%"><input type="checkbox"></td>
                <th scope="col" style="width: 8.7%">Id</th>
                <td scope="col">Includes</td> 
              </tr>
          </thead>
          <tbody>
            @foreach ($packages->costIncludes as $include)
              <tr class="data">
                <td scope="col" style="width: 6.5%"><input type="checkbox"></td>
                <th scope="col" style="width: 10%;"><a href="">{{$include->id}}</a></th>
                <td scope="col" class="text-justify" style="width:696px">{{Str::limit($include->Cost_Include,100)}}</td> 
              </tr>                                
                @endforeach
          </tbody>
      </table>

    </section>
@endsection

带有 {page} 前缀:

在此处输入图像描述

没有 {page} 前缀:

在此处输入图像描述

当我做 dd() 时使用 {page} 前缀: 在此处输入图像描述

当我做 dd() 时没有 {page} 前缀: 在此处输入图像描述

标签: phplaravellaravel-routinglaravel-controller

解决方案


在您的 CostIncludeController@index 中,添加新变量。路由器希望您处理两个变量。

public function index($page, $categories){
    $pages = Page::all();
    $packages = Package::where('slug',$categories)->first();
    return view('admin.pages.costinclude',[
        'packages' => $packages,
    ],compact('pages'));    
}

dd($categories)在这两种情况下,您都可以通过在控制器内部执行函数来确认错误的原因。


推荐阅读