php - 在 Laravel 5.6 中创建搜索表单

标签 php html mysql laravel forms

我在过去一天左右的时间里一直在学习 Laravel,并成功地在 WAMP 设置上创建了一些显示数据库查询结果的页面。我正在尝试在页面上添加一个表单,以允许我对结果进行过滤和排序。我遇到了一个问题,我得到一个 ReflectionException,指出“Class App\Http\Controllers\Result 不存在。”

我有一个 Controller

 <?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');

我的 Blade 看起来像这样:

    <!== 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 时,我得到结果列表和搜索表单,但是当我提交表单时,发生错误。如果您还有其他问题,我很乐意为您解答

最佳答案

您需要在 Controller 顶部导入 Result 类:

use App\Path\To\Result;

其中 App\Path\To\ 部分是 Result 类的完整命名空间。

问题出在这个函数上:

public function show_all_filtered(Result $result)

PHP 假定 Result 类的当前命名空间,因为它没有通过 use 显式导入。

关于php - 在 Laravel 5.6 中创建搜索表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51119191/

相关文章:

c# - 可以将字符串日期转换为 mysql 日期时间吗?

mysql - MySQL 的 IF() 函数的标准方法

javascript - 如何进行数据完整性和错误处理?

PHP-获取当前语言环境

html - :nth-of-type in haml and scss 的问题

html - 即使到达页面末尾,覆盖元素 div 仍在滚动

javascript - 使用javascript根据从数据库中获取的值更改输入字段边框颜色

php - 如何从 PHP 中的数据库查询返回数值?

php - 拆分包含的函数会提高 PHP 性能吗?

html - 下拉列表对齐问题 (HTML/CSS)