【发布时间】:2021-01-16 10:10:33
【问题描述】:
我搜索了很多,但没有任何帮助; 我正在使用带有 MySQL DB 的 laravel 7,我是 PHP 和 Laravel 的新手
这是控制器:
class SandController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$sand = Sand::latest()->paginate(10);
$sand_cmonths = DB::table('sand')
->select(DB::raw('cmonth'))
->groupBy('cmonth')
->get();
return view('sand.index')->with(compact('sand','sand_cmonths'));
}
public function search(Request $req){
$search = $req->get('search');
$sand = DB::table('sand')
->where('vehicle_number','LIKE','%'.$search.'%')
->orWhere('bill_number', 'LIKE', '%'.$search.'%')
->orWhere('per_ton_rate', 'LIKE', '%'.$search.'%')
->orWhere('total_weight', 'LIKE', '%'.$search.'%')
->orWhere('total_rate', 'LIKE', '%'.$search.'%')
->paginate(10);
return view('sand.index',['sand'=>$sand], compact('search'));
}
}
这些是我的路线
Route::resource('sand','SandController');
Route::get('/sand','SandController@search')->name('sand.search');
此外,当我禁用搜索路线一切正常时,第二个变量 $SAND_CMONTHS 也正常
【问题讨论】:
-
您不能使用相同的 URI 前缀。这里
/sand和/sand是相同的前缀。我建议你更改第二个路由 URI 前缀,例如Route::get('/search/sand','SandController@search')->name('sand.search'); -
但是我需要在同一页面上的搜索路线,当我更改路线时,它会将我带到一个空白的未找到页面
-
Route::get('/sand','SandController@search') 中的 "/sand" 是控制器的 index 方法的默认路由 放置 Route::get('/ sand','SandController@search')->name('sand.search') 位于 Route:: 资源上方,或者将“/sand”更改为其他内容
-
如果你这样做会和你的资源索引方法冲突
sand.index从这里了解更多关于资源控制器laravel.com/docs/7.x/controllers#resource-controllers