Laravel 控制器未接收到从表单发送的数据

问题描述 投票:0回答:1

当尝试将数据从搜索栏表单发送到路由控制器时,无法使用 $request->input("name") 访问数据。我该如何解决这个问题?

控制器

class SearchController extends Controller
{
    function search(Request $request){
        if(empty($request->input("search"))){
            return view("search", ["results" => [], "searchTerm" => ""]);
        }
        else{
            $searchTerm = $request->input("search");
            $papers = Papers::where("title", "like", "%".$searchTerm."%")
            ->orWhere("author", "like", "%".$searchTerm."%")
            ->orWhere("tags", "like", "%".$searchTerm."%")
            ->get();
            return view("search", ["results" => $papers, "searchTerm" => $searchTerm])->with("data", $request->input());
        }
    }
}

表格

<form class="form-search flex-center w100" method="GET" action="{{route("search")}}">
    <input type="text" name="search" placeholder="Sök..." value="{{empty($search) ? "" : $search}}">
    <button id="submit" for="submit">
        <span class="shadow"></span>
        <span class="edge"></span>
        <span class="front flex-center"><img src="{{asset("svg/search.svg")}}" alt="search icon svg"> Sök</span>
    </button>
</form>

路线

use App\Http\Controllers\LandingController;
use App\Http\Controllers\SearchController;
use Illuminate\Support\Facades\Route;

Route::get("/", [LandingController::class, "index"])->name("home");

Route::get('/search', [SearchController::class, 'search'])->name('search');

我尝试将输入更改为查询,并且我使用了数据转储,它在请求的输入或查询时给我“[]”,并在 $request 时显示此信息:

  #content: null
  #languages: null
  #charsets: null
  #encodings: null
  #acceptableContentTypes: null
  #pathInfo: "/search"
  #requestUri: "/search?search=Repellat+sint+autem+facilis+odit."
  #baseUrl: ""
  #basePath: null
  #method: "GET"
  #format: null
  #session: 
Illuminate\Session\SymfonySessionDecorator {#278 ▶}
  #locale: null
  #defaultLocale: "en"
  -preferredFormat: null
  -isHostValid: true
  -isForwardedValid: true
  -isSafeContentPreferred: ? bool
  -trustedValuesCache: []
  -isIisRewrite: false
  #json: null
  #convertedFiles: null
  #userResolver: Closure($guard = null) {#237 ▶}
  #routeResolver: Closure() {#246 ▶}
  basePath: ""
  format: "html"
php laravel routes laravel-blade laravel-11
1个回答
0
投票

您正在将发布数据发送到定义为 GET 路由的路由。 更改路线:

Route::post('/search', [SearchController::class, 'search'])->name('search');

您的表格:

<form class="form-search flex-center w100" action="{{route("search")}}" method="POST">

并将 CSRF 令牌添加到表单中

{{ csrf_field() }}
© www.soinside.com 2019 - 2024. All rights reserved.