我在过去一天左右的时间里一直在学习 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/