我有这个控制器:
<?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)
答案 0 :(得分:3)
您未正确使用compact()
。正确使用是这样的:
return view('welcome', compact('anc'));
将要压缩的变量的名称作为字符串传递。
答案 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函数需要变量的名称,而不是变量本身。