php - ErrorException 未定义变量:视频
问题描述
我有一个使用 Laravel 开发的远程教育网站。过滤某些页面时会出错。例如,当您在学生屏幕上单击图书馆 -> 作业图书馆时,该页面将打开。但是,当我在页面上过滤选择教师时,它会出错。错误代码“ErrorException 未定义变量:视频”。附上控制器页面。如果你能提供帮助,我会很高兴。在第 49 行显示第一个错误
<?php
namespace App\Http\Controllers;
use App\Classes;
use App\Gains;
use App\SylllabussFiles;
use App\Task;
use App\TaskFiles;
use App\User;
use Illuminate\Http\Request;
use App\Lesson;
class LessonController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
if($request->get('name')!=''){
$lessons = New Lesson;
if($request->get('name')!=''){
$lessons = $lessons->where('name','LIKE','%'.$request->get('name').'%');
}
$lessons=$lessons->get();
}else{
$lessons = Lesson::orderBy('name', 'asc')->paginate(25);
}
$lessoncount=$lessons->count();
return view('lesson.index', compact(['lessons','lessoncount']));
}
public function library(Request $request)
{
if($request->get('type')==1){
$videos = New SylllabussFiles;
}elseif($request->get('type')==2){
$videos = New TaskFiles;
}
if ($request->get('date') != '' || $request->get('lesson_id') != '' || $request->get('classes_id') != ''|| $request->get('teacher_id') != '') {
if ($request->get('date') != '') {
$videos = $videos->where('start_date', 'LIKE', '%' . $request->get('date') . '%');
}
if ($request->get('teacher_id') != '') {
$videos = $videos->where('teacher_id', $request->get('teacher_id'));
}
$videos = $videos->get();
} else {
if($request->get('type')==1){
$videos =SylllabussFiles::orderBy('id', 'desc')->get();
}elseif($request->get('type')==2) {
$videos = TaskFiles::orderBy('id', 'desc')->get();
}
}
$lessoncount=$videos->count();
$teacher = User::where('type', 1)->orderBy('name', 'asc')->pluck('name', 'id');
return view('lesson.library', compact(['videos','lessoncount','teacher']));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('lesson.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$create = Lesson::create($request->all());
if ($create) {
notify()->success('İşleminiz başarıyla gerçekleşti','Kayıt Başarılı');
return redirect()->route('lesson.index');
} else {
notify()->error('Maalesef Hata Oluştu','Kayıt Başarısız');
return redirect()->back();
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
return view('lesson.import');
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$lesson = Lesson::find($id);
return view('lesson.edit', compact(['lesson']));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$update = Lesson::find($id)->update($request->all());
if ($update) {
notify()->success('İşleminiz başarıyla gerçekleşti','Kayıt Düzenlendi');
return redirect()->route('lesson.index');
} else {
notify()->error('Maalesef Hata Oluştu','Düzenleme Başarısız');
return redirect()->back();
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$delete = Lesson::find($id)->delete();
if ($delete) {
notify()->success('İşleminiz başarıyla gerçekleşti','Kayıt Silindi');
} else {
notify()->error('Maalesef Hata Oluştu','Silme Başarısız');
}
return redirect()->route('lesson.index');
}
function getIdByPoints(Request $request){
$id=$request->get("id");
$names = Lesson::where('id',$id)->first();
return $names->point;
}
}
解决方案
您的库函数中有以下代码:
if($request->get('type')==1){
$videos = New SylllabussFiles;
}elseif($request->get('type')==2){
$videos = New TaskFiles;
}
没有else
声明,因此,如果type
不同于 1 和 2,$videos
则永远不会设置。
所以,当它到达这部分时:
$videos = $videos->where('start_date', 'LIKE', '%' . $request->get('date') . '%');
$videos
尚未设置。
我向您建议的是设置一个else
语句并将一些“空”放入$videos
或设置它$videos = null;
并稍后在代码中检查空值。像这样的东西:
if ($request->get('type')==1) {
$videos = New SylllabussFiles;
} else if($request->get('type')==2) {
$videos = New TaskFiles;
} else {
$videos = null;
}
然后,检查 null:
if ($request->get('date') != '' || $request->get('lesson_id') != '' || $request->get('classes_id') != ''|| $request->get('teacher_id') != '') {
if ($videos !== null) {
if ($request->get('date') != '') {
$videos = $videos->where('start_date', 'LIKE', '%' . $request->get('date') . '%');
}
if ($request->get('teacher_id') != '') {
$videos = $videos->where('teacher_id', $request->get('teacher_id'));
}
$videos = $videos->get();
}
} else {
//else stuff
}
您可以做的另一件事是设置$videos = [];
. 这样,您甚至可以foreach
在刀片模板中计算和/或使用它。
推荐阅读
- mongodb - 如果存在则更新,如果不在 mongodb 中则插入
- linux - Ubuntu 下的 Qt - 输入重音符号
- laravel - 如何在流明中从 mongo db 中检索数据
- flutter - 在颤动中使用相机包没有点击和预览图片
- azure-pipelines - 无法在 Azure 上为 ARM64 上的模块构建映像以用于 iotedge 管道
- r - 由 / 分隔的嵌套列表的列
- php - Wordpress wp_send_json_success() 成功返回 undefined
- sql - 连接两个表以保留选定的值和空值
- python - 终端找不到 PyCharm 中导入的模块
- python - 获取主键 django 的问题