ErrorException未定义变量Laravel

时间:2019-01-06 19:02:25

标签: php laravel laravel-5 query-builder

嘿,我刚刚开始学习如何使用Laravel,当我尝试运行下面的代码时,我得到了:

  

未定义变量错误

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <ul>
        @foreach ($tasks as $task)
            <li>{{ $task->Todo }}</li>
        @endforeach
    </ul>
</body>
</html>

这是web.php文件中使用的代码:

web.php

Route::get('/tasks', function () {
        $tasks = DB::table('tasks')->get();
    //return $tasks;
        return view('welcome',compact($tasks));
    });

我发现,如果我在两个文件中都使用$GLOBALS['variable'];来替换$tasks变量,那么它将起作用。

但是在示例视频中,他们没有使用$GLOBALS['variable'];

这是我得到的错误:

  

“未定义的变量:任务(视图:C:\ Users \ Friday \ Documents \ Documentations \ laraprojects \ BrainGear \ resources \ views \ welcome.blade.php)”

2 个答案:

答案 0 :(得分:2)

您需要在compact()帮助器中传递变量名(如@utdev所说)。您可以阅读有关此here的更多信息。所以:

return view('welcome', compact('tasks'));

另一种选择是像这样将变量发送到视图:

return view('welcome')->with('tasks', $tasks);

甚至是“糖糊”(相当于最后一个):

return view('welcome')->withTasks($tasks);

要了解更多信息,请查看文档的Passing data to views部分。

答案 1 :(得分:0)

您必须像这样返回变量:

    return view('welcome', compact('tasks'));

然后,您可以像以前一样使用它,但是请使用小写字母:

    @foreach ($tasks as $task)
        <li>{{ $task->todo }}</li>
    @endforeach