首页 > 解决方案 > 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;
    }
}

标签: phplaravelvariablesundefined

解决方案


您的库函数中有以下代码:

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在刀片模板中计算和/或使用它。


推荐阅读