Laravel 7,缺少[Route:/ xxxxx]错误的必需参数

时间:2020-03-15 13:17:36

标签: php laravel routes laravel-7

我试图将一个值从视图传递给控制器​​,并在查询中使用该值。我收到缺少参数错误。这是我的代码。 查看:

<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 个答案:

答案 0 :(得分:1)

您有两个问题

第一,将您的路线固定为这样

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'));
}

您可以在此处阅读有关路由parameters的更多信息

最后,您可以像这样使您的a标签更加清晰

<a href="{{ route('first_letter', 'A') }}">A</a>

答案 1 :(得分:0)

首先,您确定控制器名称为“ PtoductController ”吗?它不应该叫做 ProductController 吗?

然后,如果控制器名称正确,请从您从控制器调用的链接中删除“ $”。

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

最后,将$ f_letter作为参数放入“ first_letter”函数中。

public function index($f_letter)
{
   //your code
}
相关问题