0

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

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

2 回答 2

1

你有两个问题

首先,把你的路线改成这样

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

当你通过一个wildcardin 路线时,它{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>
于 2020-03-15T13:27:45.447 回答
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
}
于 2020-03-15T15:00:16.853 回答