Laravel - Как я могу показать, что было отсортировано - PullRequest
0 голосов
/ 21 мая 2018

Это мой контроллер

if ($request->input('sort')) {
    $sort = $request->input('sort');
}

if ($sortBy == "asc") {
    $image_ = Image::where('property_id', $id)
              ->orderBy($sort,'asc')
              ->get();
 }

return view('settings.photos', ['image_' => $image_]);

Это мой блейд-файл

@if( isset($image_))
    @foreach ($image_ as $images)
        <div class="image-warp">
            <img src="{{$images->filename}}" 
                 style="width:100px;height:100px;">
            <br/>
            <span style="color: #1b1e21">{{$images->description}}</span>
        </div>
    @endforeach
@endif

Он не отображает переменную $images_, как я могу его отобразить?

1 Ответ

0 голосов
/ 21 мая 2018

Вы должны передать две переменные вашему контроллеру

1) SortBy : столбец, по которому вы хотите выполнить сортировку

2) SortOrder : порядок сортировки по возрастанию или по убыванию

Вы можете передать эти двапеременные для запроса параметров строки запроса:

например: http://yourdomain.com/products?sortBy=name&sortOrder=-1

получить эти параметры запроса в вашем контроллере

 public function sort_products(Request $request){
    $id, $sortBy , $sortOrder ;

    $id=$request->input('id');

    // check request has sortBy 

    if($request->has('sortBy')){
      $sortBy=$request->query('sortBy');
    }else{
       //request has no sort by  , set default sort by 
        $sortBy='name';
     }

     // check request has sortOrder 

    if($request->has('sortOrder')){
       $sortOrder=$request->query('sortOrder');
    }else{
       //request has no sort order  , set default sort order         
       $sortOrder='asc';
    }

    $images = Image::where('property_id',$id)->orderBy($sortBy,$sortOrder)->get();

    return view('yourview',compact('images','sortBy','sortOrder'));
 }

в виде блэйдаиспользуйте значки шрифта Aweasome для отображения стрелки вверх и вниз для порядка сортировки:

http://fontawesome.io/icons/

@if( count($images)>0 )
        <table>
          <thead>
              <tr>
                 <th>FileName 
                     @if($sortBy=='name')
                         @if($sortOrder=='asc')
                          <span><i class="fas fa-sort-up"></i></span>
                         @else
                          <span><i class="fas fa-sort-down"></i></span>
                         @endif
                     @endif
                  </th>
                 <th>Description
                   @if($sortBy=='description')
                         @if($sortOrder=='asc')
                          <span><i class="fas fa-sort-up"></i></span>
                         @else
                          <span><i class="fas fa-sort-down"></i></span>
                         @endif
                     @endif
                 </th>
              </tr>
          </thead>
          <tbody>
        @foreach ($images as $image)
             <tr>
                <td>
                   <img src="{{$image->filename}}" style="width:100px;height:100px;">
                </td>
                <td>
                     <span style="color: #1b1e21">{{$image->description}}</span>
                </td>
             </tr>
        @endforeach
        </tbody>
        </table>
@else
 <p>NO IMAGES FOUND.</p>
@endif

для получения дополнительной информации: https://laravel.com/docs/5.6/requests

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...