Как сравнить значение из строки поиска с значением из базы данных в laravel - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь использовать окно поиска в своем проекте Laravel, но с утра получаю ту же ошибку

Вот мой Search controller

    <?php

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;

    class SearchController extends Controller
    {
        public function index()
        {

            return view('search.index');
        }
        public function Search(Request $request)
        {
            $serial_number= $request->input('search');
            $results =DB::table('animals')->where(function ($query) use ($serial_number) {
                $query->where('serial_number','LIKE',"%$serial_number%");
            })->latest()->get();
            return view('search',compact('results'));

        }
    }

My routes

Route::get('/search','SearchController@index')->name('search');
Route::post('/search','SearchController@search')->name('search');

и, наконец, мой view

    @extends('layouts.app')

    @section('content')
        <form action="{{ route('search') }}" method="POST">

            <div class="p-1 bg-light rounded rounded-pill shadow-sm mb-4">
                <div class="input-group">
                    <input type="search" name="search" placeholder="Here the animal serial number..." aria-describedby="button-addon1" class="form-control border-0 bg-light">
                    <div class="input-group-append">
                        <button id="button-addon1" type="submit" class="btn btn-link text-primary"><i class="fa fa-search"></i></button>
                    </div>
                </div>
            </div>
        </form>
        @if($results)
            <div class="container">
                <div class="row justify-content-center">
                    <div class="col-md-8">
                        <div class="card">
                            <div class="card-header">
                                <h3>Details for the animal</h3>

                            </div>
                            <div class="card-body">
                                <div class="col-12">
                                    <p><strong>Id: </strong>{{ $results->id }}</p>
                                    <p><strong>Animal: </strong>{{ $results->type->category }}</p>
                                    <p><strong>Gender: </strong>{{ $results->gender }}</p>
                                    <p><strong>Place Of Birth: </strong>{{ $results->user->address->city }}</p>
                                    <p><strong>Farm: </strong>{{ $results->user->name }}</p>
                                    <p><strong>Date: </strong>{{ $results->created_at }}</p>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

        @endif
    @endsection

Для меня, я думаю, что проблема заключается в controller в этой строке $ результат, который заставляет представление дать ошибку

419 | Страница просрочена или «Фасад \ Зажигание \ Исключения \ ViewException Неопределенная переменная: результаты (Просмотр: /Users/macair13/MeatracProject/resources/views/search/index.blade.php)"

1 Ответ

1 голос
/ 27 октября 2019

Вам необходимо включить токен CSRF или исключить этот URL из проверки токена CSRF.

<form ...>
    @csrf
    ...
</form>

Документы Laravel 6.x - CSRF

Также выне передают переменную results в ваше представление "search" из метода index контроллера. Вам нужно будет проверить, если $results isset на ваш взгляд или передать его на ваш взгляд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...