我试图将一个值从视图传递给控制器,并在查询中使用该值。我收到缺少参数错误。这是我的代码。 查看:
<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'));
}
答案 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
}