Reputation: 11117
I have this controller:
<?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));
}
}
and this view :
<!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>
Very simple and nothing special. just getting contents of a url and parsing it with a simple library and returning variable anc
to the welcome
view and then in the view i'm trying to echo each element. it gives me:
ErrorException in 051dd3929cf86b31dbaacb340018a3c5 line 9:
Undefined variable: anc (View: C:\Users\User\Desktop\Project\resources\views\welcome.blade.php)
Upvotes: 0
Views: 1295
Reputation: 961
You are using the compact() function in your first block of code incorectly. Try this...
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'));
}
}
The compact function requires the name of the variable, not the variable itself.
Upvotes: 1
Reputation: 6381
You're using compact()
improperly. Correct usage is this:
return view('welcome', compact('anc'));
Pass the names of the variables you want compacted, as strings.
PHP doc: http://php.net/manual/en/function.compact.php
Upvotes: 3