Laravel 5.1 - 视图中的未定义变量

时间:2016-01-05 19:01:01

标签: php laravel-5.1

我有这个控制器:

<?php

namespace App\Http\Controllers;

class TestController extends Controller
{
    public function index()
    {
        $html = file_get_html('http://www.somesite.com/');
        $html->getElementsByTagName('article');
        $anc = $html->find('a');

        return view('welcome', compact($anc));
    }
}

和这个观点:

<!DOCTYPE html>
<html>
    <head>
        <title>Laravel</title>
    </head>
    <body>
        <div class="container">
            <div class="content">
                @foreach($anc as $item)
                    {{ $item }} <br>
                @endforeach
            </div>
        </div>
    </body>
</html>

很简单,没什么特别的。只获取一个url的内容并用一个简单的库解析它并将变量anc返回到welcome视图,然后在视图中我试图回显每个元素。它给了我:

ErrorException in 051dd3929cf86b31dbaacb340018a3c5 line 9:
Undefined variable: anc (View: C:\Users\User\Desktop\Project\resources\views\welcome.blade.php)

2 个答案:

答案 0 :(得分:3)

您未正确使用compact()。正确使用是这样的:

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

将要压缩的变量的名称作为字符串传递。

PHP doc: http://php.net/manual/en/function.compact.php

答案 1 :(得分:1)

您在第一个代码块中使用了compact()函数。试试这个......

class TestController extends Controller
{
    public function index()
        {
            $html = file_get_html('http://www.somesite.com/');
            $html->getElementsByTagName('article');
            $anc = $html->find('a');

            return view('welcome', compact('anc'));
        }
 }

compact函数需要变量的名称,而不是变量本身。