Создание формы поиска в laravel 5.6 - PullRequest
0 голосов
/ 01 июля 2018

Я изучал Laravel за последний день или около того и сумел успешно создать несколько страниц в настройке WAMP, которые отображают результаты запроса к базе данных. Я пытаюсь добавить форму на странице, которая позволяет мне фильтровать и сортировать результаты. Я столкнулся с проблемой, когда я получаю ReflectionException, заявляя, что "Class App \ Http \ Controllers \ Result не существует."

У меня есть контроллер

 <?php
namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Http\Input;

class ResultsController2 extends Controller
{
    /*  
        Display results for search query on cars table.
    */

    public function show_all()
    {
        //This will query the database for our cars
        //$cars = DB::connection('mysql')->select("select * from cars");

        $cars = \DB::select('SELECT * FROM `cars` INNER JOIN makes on cars.make=makes.id INNER JOIN models on cars.model=models.id');
        $makes = \DB::select('SELECT * FROM `makes`');

        return view('results2',['cars'=>$cars,'makes'=>$makes]);
    }

    public function show_all_filtered(Result $result)
    {
        $QueryAppend = "";
        if(Input::post())
        {
            $formMake = Input::post('make');
            $QueryAppend = ' WHERE cars.make=`'.$formMake.'`';//This only filters the results if there has been a form selection
        }
        //This will query the database for our cars
        //$cars = DB::connection('mysql')->select("select * from cars");

        $cars = \DB::select(
            'SELECT * FROM `cars` 
            INNER JOIN makes on cars.make=makes.id 
            INNER JOIN models on cars.model=models.id'
            .$QueryAppend);
        $makes = \DB::select('SELECT * FROM `makes`');

        return view('results2',['cars'=>$cars, 'makes'=>$makes]);
    }   
}

Мои маршруты выглядят так:

    Route::get('/', 'ResultsController@show_all');

Route::get('/question3','ResultsController2@show_all');
Route::post('/question3','ResultsController2@show_all_filtered');

Route::get('/question4','ResultsController2@show_all');

и мой клинок выглядит так:

    <!== This should be the template for the results for the database query -->


@extends('layouts.app')

@section('title', 'Question 2')

@section('content')
    <p>Results</p>
    <div class="grid">
        <div class="col100">Make</div><div class="col100">Model</div><div class="col100">Reg</div><div class="col100">Mileage</div>
    </div>
    <div class="clear"></div>
    @foreach ($cars as $car)
        <div class="grid">

                <div class="col100">
                {{ $car->make }}        
                </div>
                <div class="col100">
                {{ $car->model }}       
                </div>
                <div class="col100">
                {{ $car->number_plate }}        
                </div>
                <div class="col100">
                {{ $car->mileage }}     
                </div>

        </div>
        <div class="clear"></div>
    @endforeach
    <div class="clear"></div>
    {{ Form::open( ['action'=> 'ResultsController2@show_all_filtered'] ) }}

        <select name"make">
            @foreach ($makes as $make)
                <option value="{{ $make->make }}">{{ $make->make}}</option>
            @endforeach
        </select>
        {{ Form::submit('Update') }}
    {{ Form::close() }}
    <div class="grid">
        <div class="col300">
@endsection

когда я перехожу к / question3, я получаю список результатов и форму поиска, но когда я отправляю форму, возникает ошибка. Если у вас есть еще вопросы, я буду рад ответить на них

1 Ответ

0 голосов
/ 01 июля 2018

Вам необходимо импортировать класс Result в верхней части вашего контроллера:

use App\Path\To\Result;

где часть App\Path\To\ является полным пространством имен класса Result.

Проблема в этой функции:

public function show_all_filtered(Result $result)

PHP предполагает текущее пространство имен для класса Result, поскольку оно явно не импортируется через use.

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