【问题标题】:Undefined variable: worklogs_yesterday (View: /home/riwaj/Desktop/projects/dmt-intern-manager/InternManager/resources/views/home.blade.php)未定义变量:worklogs_yesterday(查看:/home/riwaj/Desktop/projects/dmt-intern-manager/InternManager/resources/views/home.blade.php)
【发布时间】:2020-05-11 18:29:35
【问题描述】:

错误的屏幕截图如下所示。即使我在 home.blade.php 中传递了变量,我也会收到标题中提到的错误。

未定义变量:worklogs_yesterday(查看:/home/riwaj/Desktop/projects/dmt-intern-manager/InternManager/resources/views/home.blade.php)

变量 worklogs_yesterday 已通过其各自的控制器传递,尽管它显示了错误。

    public function index()
    {

        $d = new DateTime('first day of this month'); //first date of current month
        $d = $d->format('Y-m-d'); // changing in Y-m-d format

        $e = new DateTime('last day of this month'); //last date of current month
        $e = $e->format('Y-m-d');  // changing in Y-m-d format

        $today = new DateTime();
        $today = $today->format('Y-m-d');

        $yesterday = new DateTime('yesterday');
        $day = $yesterday->format('D');
        $yesterday = $yesterday->format('Y-m-d');
        $friday = date("Y-m-d", strtotime("previous friday"));


        $worklogs = Auth::user()->workLog->take(-7)->reverse();
        $leaves_granted = Leave::where('status', 1)->where('department_id', Auth::user()->department_id)->where('startdate','>', $d)->where('enddate','<', $e)->orderBy('created_at', 'desc')->get();
        $leaves_today = Leave::where('status', 1)->where('department_id', Auth::user()->department_id)->where('startdate','=', $today)->get();

        if($day == 'Sun'||$day == 'Sat'){
        $worklogs_yesterday = Work::where('created_at', 'like', '%' . $friday . '%')->get();
        }else{
        $worklogs_yesterday = Work::where('created_at', 'like', '%' . $yesterday . '%')->get();    
        }




        if(session('role') == 'intern' || session('role') == 'manager'){
            $reset = Auth::user()->isReset;

            if($reset == 0){
                return view('auth.passwords.resetpassword');
            }

        }
        if(session('role') == 'manager'){
            $leaves = Leave::where('status', 0)->where('department_id', Auth::user()->department_id)->orderBy('created_at', 'desc')->get();
            $internrole = Role::where('name', 'intern')->first();
            $intern_list = User::where('department_id', session('department_id'))->get();
            $contracts = User::where('isContractOver','1')->where('department_id', session('department_id'))->get();
            $worklogs = Auth::user()->workLog->take(-7)->reverse();

            $interns = array();

            $contractBool=0;

            if(count($contracts)){
                $contractBool = 1;
            }  

            $check = (Input::get('ContractBool'));
            // dd((Session::get('Bool')));

            if(Session::get('Bool')==1){
                Session::put('Bool',$check);
            }

            // dd($contractBool == 1);
            // dd((Input::get('ContractBool')) );

            if(Session::get('Bool') == null && $contractBool == 1){

                    Session::put('Bool','1');
                    // Input::merge(['ContractBool' => '0']);

                    return view('manager.contract', compact('contracts'));    
            }  

            foreach($intern_list as $intern){
                $role = UserRole::where('user_id', $intern->id)->first();
                if($role->role_id === $internrole->id){
                    array_push($interns, $role);
                }
            }

            return view('home', compact('interns','contracts','worklogs','leaves_granted','leaves_today','worklogs_yesterday'));
        }
        return view('home', compact('worklogs','leaves_granted','leaves_today','worklogs_yesterday'));
    }

我的 home.blade.php 有:

<div class="bn-breaking-news" id="newsTicker1">
    <div class="bn-label">UPDATES</div>
    <div class="bn-news">
        <ul>
            <li><a href="#" style="color: red; font-size: large" id="leaves"><b>Leave Report Today</b></a></li>
            @if($leaves_today->isEmpty())
            <li><a href="#">No One is on leave today</a></li>
            @else
            @foreach($leaves_today as $leave_today)
            <li><a href="#"><b>{{$leave_today->users->name}}:</b> {{$leave_today->reason}}</a></li>
            @endforeach
            @endif
            <li><a href="#" style="color: blue; font-size: large" id="leaves"><b>Previous Work Day's Work Report</b></a>
            </li>
            @foreach ($worklogs_yesterday as $worklog_yesterday)
            @if($worklog_yesterday->users->department_id == Auth::user()->department_id )
            <li><a href="#"><b>{{$worklog_yesterday->users->name}}:</b> {{$worklog_yesterday->work_title}}</a></li>
            @endif
            @endforeach

        </ul>
    </div>
    <div class="bn-controls">
        <button><span class="bn-arrow bn-prev"></span></button>
        <button><span class="bn-action"></span></button>
        <button><span class="bn-arrow bn-next"></span></button>
    </div>
</div>

可能是什么原因?

【问题讨论】:

  • 你可以试试,在初始化之前创建$worklogs_yesterday变量。

标签: php laravel eloquent


【解决方案1】:

在代码顶部初始化$worklogs_yesterday = ' ';。如果这两个条件都失败,它将返回 null。在您的情况下,如果这两个条件均失败,则不会返回视图。条件是if($day == 'Sun'||$day == 'Sat') 否则是什么?所以这里它不返回变量$worklogs_yesterday

@isset($worklogs_yesterday)
  //Start foreach loop in view.
@endisset

【讨论】:

  • 还有一个 else 部分,我将 worklogs_yesterday 设置为不同的值。
  • 我知道,但您还需要在 if 条件之前对其进行初始化。然后检查视图是否不为空,然后执行foreach 循环。
  • 或者您可以简单地检查视图中的另一个条件,看看它是否有效。暂时不要初始化它并检查它。查看更新的答案。
猜你喜欢
  • 2018-07-10
  • 2019-11-07
  • 2019-11-07
  • 2021-10-17
  • 2021-01-08
  • 1970-01-01
  • 2021-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多