php - Laravel - 方法 Illuminate\Http\Request::request 不存在
问题描述
我创建了一个视图来创建新课程“create.blade.php”。我正在尝试将此数据存储在数据库中,但是我收到以下错误:
BadMethodCallException 方法 Illuminate\Http\Request::request 不存在。
我不确定是什么导致了错误,因为我在控制器中引用了请求命名空间。见下文;
CoursesController.php;
<?php
namespace App\Http\Controllers\Admin;
use Gate;
use App\User;
use App\Course;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Input;
class CoursesController extends Controller
{
public function __construct()
{
//calling auth middleware to check whether user is logged in, if no logged in user they will be redirected to login page
$this->middleware('auth');
}
public function index()
{
if(Gate::denies('manage_courses')){
return redirect(route('home'));
}
$courses = Course::all();
return view('admin.course.index')->with('course', $courses); //pass data down to view
}
public function create()
{
if(Gate::denies('create_courses')){
return redirect(route('home'));
}
$courses = Course::all()->pluck('title');
$instructors = User::all()->pluck('name', 'id'); //defining instructor variable
return view('admin.course.create', compact('instructors')); //passing instructor to view
}
public function store(Request $request)
{
$course = Course::create($request->all()); //request all the data fields to store in DB
$course->courses()->sync($request->request('courses', [])); //
if($course->save()){
$request->session()->flash('success', 'The course ' . $course->title . ' has been created successfully.');
}else{
$request->session()->flash('error', 'There was an error creating the course');
}
return redirect()->route ('admin.courses.index');
}
}
创建.blade.php
@extends('layouts.app')
@section('content')
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Create Course</div>
<div class="card-body">
<form method="POST" action="{{ route('admin.courses.store') }}" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label class="required" for="name">Course Title</label>
<input class="form-control {{ $errors->has('title') ? 'is-invalid' : '' }}" type="text" name="title" id="id" value="{{ old('title', '') }}" required>
@if($errors->has('name'))
<div class="invalid-feedback">
{{ $errors->first('name') }}
</div>
@endif
</div>
<div class="form-group">
@if (Auth::user()->isAdmin())
{!! Form::label('Instructor', 'Instructor', ['class' => 'control-label']) !!}
{!! Form::select('Instructor[]', $instructors, Input::get('Instructor'), ['class' => 'form-control select2', 'multiple' => 'multiple']) !!}
@if($errors->has('Instructor'))
{{ $errors->first('Instructor') }}
</p>
@endif
</div>
<div class="form-group">
<button class="btn btn-danger" type="submit">
Save
</button>
</div>
</div>
@endif
</form>
</div>
</div>
@endsection
我是 laravel 的新手,所以我将不胜感激。谢谢。
解决方案
错误信息
BadMethodCallException 方法 Illuminate\Http\Request::request 不存在
表示尝试调用类上命名的方法/函数request
, Illuminate\Http\Request
并且该函数不存在。
看起来您确实在这里尝试使用 request() 方法:
$course->courses()->sync($request->request('courses', []));
您很可能需要 input() 方法,它会将数据发布为“课程”。
$course->courses()->sync($request->input('courses', []));
如https://laravel.com/docs/master/requests#input-trimming-and-normalization所述
我希望这有帮助!
推荐阅读
- vba - Excel VBA - 工作簿中 1 的总和不等于 VBA 中的 1
- c# - 当 EncodeToPNG() 创建过大的缓冲区时,如何将大的 Texture2D 保存到磁盘?
- python-3.x - Python 子进程错误 22 - 在调试时有效,但在运行时无效
- java - IntelliJ IDEA 模块信息警告
- linux - 使用 phc2sys 获得较大的偏移量
- python - 显示在 printf 语句之外的值
- java - 在 java 中为 tesseract OCR 预处理图像(局部阈值)?
- ruby - RubyMine 调试 gem 版本与公共 gem 版本不同
- python - Gensim Word2Vec 的内部工作原理
- ios - 你如何为 iOS DatePicker Xamarin 制作自定义渲染器