Laravel 7, отсутствуют обязательные параметры для ошибки [Route: / xxxxx] - PullRequest
0 голосов
/ 15 марта 2020

Я пытаюсь передать значение из представления в контроллер и использовать это значение в запросе. Я получаю сообщение об ошибке параметра. Это мой код Вид:

<a href="{{ action('/first_letter', ['f_letter'=>'A']) }}">A</a>

Маршрут:

Route::get('/first_letter/{$f_letter}','PtoductController@first_letter')
    ->name('first_letter');

Контроллер:

public function index()
{  
    $products = DB::table('products')
            ->join('families', 'products.id_family', '=', 'families.id')
            ->select('products.name')
            ->where('products.name', 'like', $f_letter.'%')
            ->get();

     return view('product.index', compact('products'));
}

Ответы [ 2 ]

1 голос
/ 15 марта 2020

У вас есть две проблемы

сначала , исправьте ваш маршрут так:

Route::get('/first_letter/{f_letter}','PtoductController@first_letter')
    ->name('first_letter');

, когда вы проходите маршрут wildcard, он написан как это {f_letter} не {$f_letter}

Секунда , в вашем контроллере вам нужно передать wildcard в вашем методе как parameter как этот

public function index($f_letter)
{  
    $products=DB::table('products')
            ->join('families', 'products.id_family', '=', 'families.id')
            ->select('products.name')
            ->where('products.name', 'like', $f_letter.'%')
            ->get();

     return view('product.index', compact('products'));
}

вы можете прочитать больше о маршрутизации параметры здесь

Наконец вы можете сделать свой тег a более понятным, как этот

<a href="{{ route('first_letter', 'A') }}">A</a>
0 голосов
/ 15 марта 2020

Сначала , вы уверены, что имя контроллера - " PtoductController "? Разве он не должен называться ProductController ?

Тогда , если имя контроллера правильное, удалить «$» из ссылки, которую вы вызываете из контроллера.

Route::get('/first_letter/{f_letter}', ['uses' => 'PtoductController@first_letter'])
    ->name('first_letter');

Last , поместите $ f_letter в качестве параметра в функцию "first_letter".

public function index($f_letter)
{
   //your code
}
...