2017-08-01 1 views
0

J'ai écrit un code simple pour imprimer des éléments de tableau associatif mais il est dans une boucle conditionnelle et bien que je pense que foreach est écrit correctement. ça ne marche pas. la boucle foreach utilise une variable qui a été transmise par des routes.Problème lors de l'impression d'un tableau associatif à l'aide de foreach dans la lame

return view('results') 
    ->with('name', $name) 
    ->with('state', $state) 
    ->with('pms', $pms) 
    ->with('hasresult', $hasresult) 
    ->with('err', $err) 
    ->with('errNoEntries', $errNoEntries); 

Le code est écrit ci-dessous:

@extends('layouts.master') 

@section('title') 
    Search Results 
@endsection 

@section('content') 

    <h2>Australian Prime Ministers</h2> 

    @if ($errNoEntries) {{-- meaning the data was entered incorrectly --}} 
     <p class='alert'>{{$err}}</p> 
    @elseif (!$hasresult) 
     <p class='alert'>No Results found</p> 
    @else 
     <table class="bordered"> 
      <thead> 
       <tr> 
        <th>No.</th> 
        <th>Name</th> 
        <th>From</th> 
       </tr> 
      </thead> 
      <tbody> 
       @foreach($pms as $pm) 
        <tr> 
         <td>{{$pm['index']}}</td> 
         <td>{{$pm['name']}}</td> 
         <td>{{$pm['from']}}</td> 
        </tr> 
       @endforeach 
      </tbody> 
     </table> 
    @endif 

    <form method="post" action="searchresult"> 
     {{csrf_field()}} 
     <table> 
      <tr><td>Name: </td><td><input type="text" name="name"></td></tr> 
      <tr><td>Year: </td><td><input type="text" name="year"></td></tr> 
      <tr><td>State: </td><td><input type="text" name="state"></td></tr> 
      <tr><td colspan=2><input type="submit" value="Search"> 
      <input type="reset" value="Reset"></td></tr> 
     <table> 
    </form> 

@endsection 
+0

Quelle erreur est donnée? et quelle est la sortie de $ err? –

+0

ErrorException Argument non valide fourni pour foreach() (Vue: /home/ubuntu/workspace/WebAppDev/Week4/assoc-laravel/resources/views/results.blade.php) –

+0

err est une variable de type chaîne. le haut si elseif travail bien et la vérification d'erreur fonctionne, c'est juste l'autre bit spécifiquement l'impression du tableau associatif qui ne fait pas. un élément typique dans $ pms array = $ pms = array ( array ('index' => '1', 'name' => 'Edmund Barton', 'from' => '1 janvier 1901', 'to' = > "24 septembre 1903", "parti" => "protectionniste", "durée" => "2 ans, 8 mois, 24 jours", "état" => "Nouvelle-Galles du Sud")); –

Répondre

1

Je pense que vous devriez essayer ceci:

@if(is_object($pms) || is_array($pms)) 
@foreach($pms as $pm) 
       <tr><td>{{$pm['index']}}</td><td>{{$pm['name']}}</td><td>{{$pm['from']}}</td></tr> 
      @endforeach 

@endif 

Remarque: peut-être votre $ pms est pas un tableau ou un objet

+0

merci. bien que je n'ai pas seulement les méthodes, j'ai débuggé et ai trouvé que mon tableau venait en effet vide en raison d'une erreur logique. le code était correct –