0

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)
1
  • I just tried isset($anc)) and it's not set. Commented Jan 5, 2016 at 19:07

2 Answers 2

3

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

Sign up to request clarification or add additional context in comments.

Comments

1

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.