2016-01-05 6 views
0

У меня есть этот контроллер: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) 
+0

Я просто попробовал 'isset ($ anc))' и он не установлен. – VSG24

ответ

3

Вы используете compact() неправильно. Правильное использование заключается в следующем:

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

Пропустите имена переменных, которые вы хотите уплотняется, как строки.

PHP документ: http://php.net/manual/en/function.compact.php

+0

Это сработало ...... – VSG24

+0

Тогда вы должны принять ответ @ VSG24. –

1

Вы используете функцию компактного() в первом блоке кода incorectly. Попробуйте это ...

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')); 
     } 
} 

Для компактной функции требуется имя переменной, а не сама переменная.

Смежные вопросы