ErrorException未定义变量:视频



我有一个用Laravel开发的远程教育网站。过滤某些页面时会出现错误。例如,当您单击"库"->作业库在学生屏幕上,页面打开。然而,当我在页面上过滤"选择老师"时,会出现错误。错误代码";ErrorException未定义的变量:视频"。控制器页已附。如果你能帮忙,我会很高兴的。显示第49行中的第一个错误

<?php
namespace AppHttpControllers;
use AppClasses;
use AppGains;
use AppSylllabussFiles;
use AppTask;
use AppTaskFiles;
use AppUser;
use IlluminateHttpRequest;
use AppLesson;
class LessonController extends Controller
{
/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
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 IlluminateHttpResponse
*/
public function create()
{
return view('lesson.create');
}
/**
* Store a newly created resource in storage.
*
* @param  IlluminateHttpRequest  $request
* @return IlluminateHttpResponse
*/
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 IlluminateHttpResponse
*/
public function show($id)
{
return view('lesson.import');
}
/**
* Show the form for editing the specified resource.
*
* @param  int  $id
* @return IlluminateHttpResponse
*/
public function edit($id)
{
$lesson = Lesson::find($id);
return view('lesson.edit', compact(['lesson']));
}
/**
* Update the specified resource in storage.
*
* @param  IlluminateHttpRequest  $request
* @param  int  $id
* @return IlluminateHttpResponse
*/
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 IlluminateHttpResponse
*/
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;,稍后在代码中检查是否为null。类似这样的东西:

if ($request->get('type')==1) {
$videos = New SylllabussFiles;
} else if($request->get('type')==2) {
$videos = New TaskFiles;
} else {
$videos = 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中使用它。

最新更新