Ошибка переменной undefined в представлении лезвия laravel

Привет, поскольку я передаю представление лезвия, у которого есть собственный контроллер, я также включаю его в представление, у которого нет собственного контроллера. он дает мне неопределенную ошибку переменной, может ли кто-нибудь мне помочь, как это сделать.

У меня есть представление, в котором нет контроллера, есть только такой маршрут Route::get('index', function () { return view('index'); });. В этом представлении я передаю другое представление, у которого есть собственный контроллер, а также некоторые данные из массива. но после использования этого представления внутри представления я получаю неопределенную ошибку переменной.


person Priyank lohan    schedule 30.09.2016    source источник
comment
Четко объясните вопрос .. Чего вы хотите .. ??   -  person Kumar Rakesh    schedule 30.09.2016
comment
у меня есть представление, в котором нет контроллера, есть только Route, подобный этому Route :: get ('index', function () {return view ('index');}); в этом представлении я передаю другое представление, у которого есть собственный контроллер, а также некоторые данные из массива. но после использования этого представления внутри представления я получаю неопределенную ошибку переменной   -  person Priyank lohan    schedule 30.09.2016
comment
Вам нужно передать переменную для просмотра   -  person Komal    schedule 30.09.2016
comment
я прохожу их   -  person Priyank lohan    schedule 30.09.2016


Ответы (4)


Два шага:

  1. Объявите и перенесите $ переменную в функцию просмотра из контроллера.

     public function index()
     {
      return view("index", [ "variable" => $variable ]);
     }
    
  2. Укажите, где переданная $ переменная из Контроллера отображается в view.blade.php.

     {{ $variable }}
    

Если вы не уверены, передана переменная $ или нет

{{ isset($variable) ? $variable : '' }}
person m0z4rt    schedule 11.01.2017

Если это кому-то поможет, я совершенно не знал, что мой маршрут не был привязан к соответствующей функции контроллера и вместо этого возвращал представление напрямую, тем самым вызывая эту проблему. Я потратил добрые полчаса на то, чтобы биться головой, пока не осознал грубую ошибку.

Изменить

Здесь снова нужно выделить еще один промах. Убедитесь, что вы правильно передаете свой массив. Я делал ['key', 'value] вместо ['key' => 'value'] и получил эту проблему.

person dotNET    schedule 21.09.2020

Вы можете попробовать это:

 public function indexYourViews()
  { 
    $test = "Test Views";
    $secondViews = view('second',compact('test'));

     return view('firstview',compact('secondViews'));
   }

и после объявления {{$secondViews}} в вашем основном файле просмотра (firstview).

Надеюсь, это вам поможет.

person AddWeb Solution Pvt Ltd    schedule 30.09.2016

public function returnTwoViews() {
    $variable = 'foo bar';
    $innerView = view('inner.view', ['variable' => $variable]);

    return view('wrapper.view, ['innerView' => $innerView]);
}

Это может быть то, что вы ищете?

... внутри вашего шаблона wrapper.view:

{!! $innerView !!}

РЕДАКТИРОВАТЬ: чтобы ответить на вопрос в комментарии: чтобы получить каждую строку, которую вы используете, сделайте это в своем $innerView представлении:

@foreach($variable as $item)
    {{ $item }}
@endforeach

... и в представлении оболочки это будет по-прежнему {!! $innerView !!}

person renov8    schedule 30.09.2016
comment
спасибо, он отлично работает ... что, если у меня есть массив переменных $. тогда как мне получить в моем обзоре оболочки. - person Priyank lohan; 03.10.2016
comment
Я отредактировал исходный ответ, потому что мне нужно добавить еще код для этого случая. - person renov8; 03.10.2016