Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

mstdmstd's avatar

Error with default route parameter

Hello, In my laravel5.5/vuejs2.5 application I define resource in routes/web.php filter as :

    Route::resource('tasks/{filter}', 'TasksController', ['except' => ['create', 'edit']])->middleware('WorkTextString');

And in app/Http/Controllers/TasksController.php I have default filter :

<?php

namespace App\Http\Controllers;

use Auth;
...

class TasksController extends MyAppController
{
    use funcsTrait;


    public function index($filter= '')
    {

But I got error:

Route pattern "/admin/tasks/{filter}/{{filter}}" cannot reference variable name "filter" more than once.

even when I do not use this route...

Why this error and how to fix it?

Thanks!

0 likes
4 replies
RamjithAp's avatar

If you want to add custom route to Resource collection just add before that route separately like this

Route::get('tasks/{filter}', 'TasksController@tasksFilter');
Route::resource('tasks', 'TasksController', ['except' => ['create', 'edit']])->middleware('WorkTextString');

Check this https://laravel.com/docs/5.5/controllers#resource-controllers available resource routes by default. If any custom route can be added before the resource route.

1 like
mstdmstd's avatar

Thank you for your advice, it looks good, but when I try to get 1 item like:

tasks/id

looks like it is confused with

tasks/{filter}

Can you advice simple/effective way to deal it ?

RamjithAp's avatar
Level 10

You cannot have two dynamic routes in the same syntax for example

Route::get('tasks/{filter}'...
Route::get('tasks/{id}'...

You must change either one of them, since tasks/{id} is resource route I suggest to change the filter route bit like

Route::get('tasks/filter/{filter}', 'TasksController@tasksFilter');
Route::resource('tasks', 'TasksController', ['except' => ['create', 'edit']])->middleware('WorkTextString');
1 like
Snapey's avatar

Its probably better that your filters are query strings - and as such don't need to be passed to the index method signature.

Please or to participate in this conversation.