2016-12-29 17 views
5

jedna z najdziwniejszych błędu zdarzyło mi się dziś ranolaravel niezdefiniowana zmienna na pierwszej próbie

kiedy otworzyć ostrze pokaz mojego modelu na pierwszej próbie otrzymuję ten

zmiennej Niezdefiniowany: engs (View C: \ wamp64 \ www \ Form \ Resources \ views \ dashboard \ placeShow.blade.php)

Ale kiedy odświeżyć stronę lub otwórz go ponownie wszystko działa

mój kontroler:

public function showPlace($id) 
{ 
    $place = Place::find($id); 

    if (!$place->seen->contains(Auth::user()->id)) { 
     $place = $place->seen()->save(Auth::user()); 
    } 
    if ($place->media) { 
     $media = $place->media; 
     $engs = $media->where('category', 'engs'); 
     $heritages = $media->where('category', 'heritages'); 
     $estates = $media->where('category', 'estates'); 
     $others = $media->where('category', 'others'); 
     return view('dashboard.placeShow')->with(['place' => $place, 'engs' => $engs, 'heritages' => $heritages, 'estates' => $estates, 'others' => $others]); 
    }else{ 
     return view('dashboard.placeShow')->with(['place' => $place]); 
    } 

i moje Ostrze:

<ul> 
    @foreach($engs as $eng) 
    <li><a target="_blank" href="/{{$eng->href}}">{{$eng->old_name}}</a></li> 
    @endforeach 
</ul> 

co jest problemem

+0

'dd ($ place)' before foreach loop i sprawdź wyjście. –

+1

Jest to najprawdopodobniej spowodowane tym, że warunek 'if ($ place-> media)' jest błędny przy pierwszym podejściu, więc przypadek 'else' jest wykonywany, gdy nie przekazujesz zmiennej' engs' do widoku. Spróbuj debugować swój kod, jeśli jest to nieoczekiwane zachowanie, w przeciwnym wypadku sprawdź '@if ($ engs)' w widoku lub przekaż mu pustą tablicę 'engs' w instrukcji else. – Quasdunk

Odpowiedz

3

zaktualizować swój kawałek kodu z poniższej jeden:

<ul> 
    @if(isset($engs)) 
     @foreach($engs as $eng) 
     <li><a target="_blank" href="/{{$eng->href}}">{{$eng->old_name}}</a></li> 
     @endforeach 
    @else 
     <li>Records not found..!</li> 
    @endif 
</ul> 

I pomyśl o tym problemie, podczas gdy if ($place->media) kończy się niepowodzeniem.