【问题标题】:I am having trouble with my route in laravel [duplicate]我在 laravel 中的路线遇到问题 [重复]
【发布时间】:2020-12-04 06:48:42
【问题描述】:

将参数放在路由组前缀中是否不好,因为在某些页面中我得到非对象错误。对于大多数页面它有效,但它似乎不适用于 Route::get('/{categories}', 'AdminVisible\CostIncludeController@index');

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::prefix('cost-include')->group(function() {
                Route::get('/', 'AdminVisible\PackageController@index');
                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'));
    }

我的 CostIncludeController:

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

带有 {page} 前缀:我认为这个错误意味着该页面不存在但它存在。 如果 {page} 前缀被移除:

【问题讨论】:

    标签: laravel laravel-routing


    【解决方案1】:

    pagecategories 参数都传递给你的函数,但是你在 CostIncludeController 中的索引只有 $categories,所以 p>

    public function index($categories){
    

    应该是

    public function index($page, $categories){
    

    由于 pages 是要传递的第一个参数,因此您必须确保它也是第一个参数。 index($categories, $page) 也是错误的。

    【讨论】:

    • 感谢我从昨天开始尝试解决这个问题,我是 php 和 laravel 的新手,所以我不知道我们需要像这样在参数中传递它。
    • 是的,你的路由中的参数和你的函数中的变量不需要同名,它们是依次传递和填写的。因此,当您执行 index($categories) 时,$categories 变量实际上具有来自 'page' 参数的值
    • 感谢我学到了一些新东西。
    猜你喜欢
    • 2017-11-12
    • 2023-02-20
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多