首页 > 解决方案 > 如何在 Laravel 中获取包含特殊字符的路线

问题描述

我想使用 get 方法提交表单,然后从 URL 获取参数并对其进行处理。但我不知道如何生成我的路线。它一直显示错误Sorry, the page you are looking for could not be found. ,所以 URL 应该是这样的:search/?q=something。我想something从 URL 获取并用它进行数据库查询。

网页.php:

Route::get('/search/?q={query}', 'MoviesController@search');

MoviesController.php

 public function search($query)
    {
        $this->validate($query, [
            'search' => 'required'
        ]);
        $search = Movie::where('name', 'like', '%' . $query. '%')->get();

        return view('inc.search')->with('search', $search);
    }

HTML

<form action="/search" method="GET">
    {{-- @csrf --}}
    <input type="text" name="q" placeholder="search">
    <input type="submit">
</form>

我不知道我的 HTML 部分是真是假!

标签: phplaravel

解决方案


?q={query}您在 Route 定义中不需要它,因为我很确定这是定义 Route 参数的无效方式。代替

public function search($query){
  $this->validate($query, [
    'search' => 'required'
  ]);

public function search(Request $request){
  $this->validate($request->all(), [
    'q' => 'required'
  ]);

  $search = Movie::where('name', 'like', '%' . $request->input("q"). '%')->get();

并确保您use Illuminate\Http\Request;MoviesController.


推荐阅读