2016-07-14 4 views
0

Hellow Guys, Im пытается сравнить 2 переменные в шаблоне лезвияКак сравнить переменные в шаблоне лезвия

Мой контроллер

$files = \File::files('images'); 

    foreach ($files as $file) { 
      $info[] = pathinfo($file); 
    } 

$books = File::where('status', 1)->select('name')->get(); 

return view('cataloged.read', compact(['info','books'])); 

На мой взгляд пытаются некоторые, как этот

@foreach($info as $inf) 
@if(isset($books)) 
    @if($inf['basename'] == $books->name) 
     Match 
    @else 
     No Match 
    @endif 
@endif 
@endforeach 

Эта работа только для последней записи - У меня есть 2 записи в моей базе данных - , поэтому она работает только для второго рекордера d в этом случае ...

Что мне делать?

Спасибо за помощь, ребята!

EDIT

@foreach($books as $book) 
      @foreach($info as $file) 
       @if($book->name == $file['basename']) 
       <p>Book</p> 
       @else 
       <p>No Book</p> 
       @endif 
      @endforeach 
    @endforeach 

У меня только 4 книги в моей базе данных, так это хорошо работает

@if($book->name == $file['basename']) 
     <p>Book</p> 
@endif 

Книга Книга Книга Книга

Но когда я использую @ else im gettin вот так Книга No book 6 tim эс книга не книга 6 раз Книга Нет Книга 6 раз книга не книга 6 раз

+0

Книги это массив, поэтому вам нужно будет итератировать по нему – ExoticChimp

+0

оба файла в том же каталоге? – ClearBoth

ответ

0

Поскольку $books также массив. Вы должны, вероятно, сделать что-то вроде этого:

@foreach($info as $inf) 
    @if(isset($books)) 
     @foreach($books as $book) 
      @if($inf['basename'] == $book->name) 
       Match 
      @else 
       No Match 
      @endif 
     @endforeach 
    @endif 
@endforeach 

Редактировать

<?php 
    $i = 0; 
    $count = count($books); 
?> 
    @foreach($info as $file) 
     @if(($i<$count)?($books[$i]->name == $file['basename']):false) 
      <p>Book</p> 
     @else 
      <p>No Book</p> 
     @endif 
     <?php $i++ ?> 
    @endforeach 

Однако, если книга не должна быть в массиве, то вы должны написать File::where('status', 1)->select('name')->first(); вместо File::where('status', 1)->select('name')->get();

+0

Он не работает, но спасибо за ваш ответ – Eliott

+0

ok, тогда попробуйте использовать массив, как вы делали для '$ info' –

+0

Я сделал, но он не работает :(и я не знаю, почему ... действительно странный день – Eliott

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