2017-03-08 41 views
0

我想选择所有的酒店,其中最低的0至49它marche完美,但是当我想选择所有酒店,其中最小的0-49和50-99之间它是你说什么时候它进入循环“for”它返回此错误方法追加不存在Laravel

ErrorException在Macroable.php第74行:方法追加不存在。 (查看:C:\ XAMPP \ htdocs中\ elasticsearch \资源\视图\ presult.blade.php)(查看:C:\ XAMPP \ htdocs中\ elasticsearch \资源\视图\ presult.blade.php)

功能Laravel

public function pricefilter(Request $request) 
{ 
    $query = Input::get('query', false); 
    $brans = request()->priceFilter; 
    $books = new Collection(); 

    if (!empty($brans)) { 
     $product = ""; 

     foreach ($brans as $data) { 
      $minMax = explode("-",$data); 
      $product[] = Afica::search() 
          ->multiMatch(['name','city_hotel'], $query, ['fuzziness' => 'AUTO']) 
          ->filter() 
          ->range('minrate',['from'=>$minMax[0],'to'=>$minMax[1]]) 
          ->paginate(26) 
          ->appends('priceFilter' , request('priceFilter')); 
     } 

     $books = $product[0]; 

     for ($i = 1; $i < count($product); $i++) { 
       $books = $books->union($product[$i]); 
     } 
    } else { 
     $books = Afica::search() 
       ->paginate(26); 
    } 

    if ($request->ajax()) { 
     return view('presult', compact('books')); 
    } 

    return view('welcome',compact('books')); 
} 

查看presult

<!--deal-->  
      <?php $myArray = array();?> 

      @if (empty($myArray)) 

      @foreach($books as $Afica) 
      <?php $collection = collect($Afica);?> 
      <article class="one-third"> 
       <figure><a href="#" title=""><img src="{{ $collection->get('photo_url') }}" alt="" style="height: 215px!important;" /></a></figure> 

       <div class="details"> 

       <h3>{{{ $collection->get('name') }}} 
        <span class="stars"> 

         <?php 

         for ($i=1 ; $i<= $collection->get('class') ; $i++) 
         { 
         echo ' <i class="material-icons">&#xE838;</i>'; 
         } 

        ?> 
        </span> 
       </h3> 
       <span class="address">{{{ $collection->get('city_hotel') }}},{{{ $collection->get('address') }}} <a href="">Show on map</a></span> 
       <span class="rating">{{{ $collection->get('preferred') }}}</span> 
       <span class="price">Max rate <em>$ {{{ $collection->get('maxrate') }}}</em> </span> 
       <span class="pricee">Min rate <em>$ {{{ $collection->get('minrate') }}}</em> </span> 
       <div class="description"> 
        <p>{{{ $collection->get('desc_en') }}}<a href="hotel?query= $collection->get('name')">More info</a></p> 
       </div> 
       <a href="{{{ $collection->get('hotel_url') }}}" title="Book now" class="gradient-button">Book now</a> 
       </div> 
      </article><?php $myArray[] = $collection->get('id');?> 

      <!--//deal--> 
      @endforeach 

      @endif 




      <!--//bottom navigation--> 
      <div class="bottom-nav"> 
      <a href="#" class="scroll-to-top" title="Back up">Back up</a> 
      <div class="pager"> 
      <?php $query=Input::get('query', '');?> 
      @if($query == "") 
      <span><a href="?page=1">First Page</a></span> 
      @else 
     <span><a href="?query=<?php echo $query?>&page=1"=>FirstPage</a></span> 
     @endif 
     {!! $books->appends(['query' => Input::get('query')])->render() !!} 
     @if($query == "") 
      <span><a href="?page={!! $books->appends(['query' => Input::get('query')])->lastPage() !!}">Last Page</a></span> 
      @else 
     <span><a href="?query=<?php echo $query?>&page={!! $books->appends(['query' => Input::get('query')])->lastPage() !!}">Last Page</a></span> 
     @endif 
      <!--bottom navigation--> 
       </div> 
     </div>  
      <!--//bottom navigation--> 

回答

1

它看起来就像你正在呼吁您的变量称为在您的视图中的几个地方。

如果$books为空(即null),这可能会导致您的问题。

我建议包裹你的$books中,如果设置功能为出发点

if (isset($books) && $books != NULL) { 
    $books->appends(['query' => Input::get('query')])->render() 
} else { 
    // Do something which tells the user that there are no books 
} 

一个更好的解决办法是处理所有的逻辑,在控制器的视图,并使用像一个@forelse循环而不是@foreach循环。这样可以更轻松地处理返回空集合的情况。

@forelse ($books as $book) 
    // Do your for each book markup 
@empty 
    // Do markup which shows when you have no books 
@endforelse 

更正模板

<?php $myArray = array(); ?> 

@if (empty($myArray)) 
    @foreach($books as $Afica) 
    <?php $collection = collect($Afica);?> 
    <article class="one-third"> 
     <figure><a href="#" title=""><img src="{{ $collection->get('photo_url') }}" alt="" style="height: 215px!important;" /></a></figure> 
     <div class="details"> 
      <h3>{{{ $collection->get('name') }}} 
       <span class="stars"> 
        <?php 

        for ($i=1 ; $i<= $collection->get('class') ; $i++) { 
          echo ' <i class="material-icons">&#xE838;</i>'; 
        } 

        ?> 
       </span> 
      </h3> 
     </div> 
     <span class="address">{{{ $collection->get('city_hotel') }}},{{{ $collection->get('address') }}} <a href="">Show on map</a></span> 
     <span class="rating">{{{ $collection->get('preferred') }}}</span> 
     <span class="price">Max rate <em>$ {{{ $collection->get('maxrate') }}}</em> </span> 
     <span class="pricee">Min rate <em>$ {{{ $collection->get('minrate') }}}</em> </span> 

     <div class="description"> 
      <p>{{{ $collection->get('desc_en') }}}<a href="hotel?query= $collection->get('name')">More info</a></p> 
     </div> 
     <div> 
      <a href="{{{ $collection->get('hotel_url') }}}" title="Book now" class="gradient-button">Book now</a> 
     </div> 
    </article><?php $myArray[] = $collection->get('id');?> 

    @endforeach 
@endif 

<div class="bottom-nav"> 
    <a href="#" class="scroll-to-top" title="Back up">Back up</a> 
    <div class="pager"> 
     <?php $query=Input::get('query', '');?> 
     @if($query == "") 
      <span><a href="?page=1">First Page</a></span> 
     @else 
      <span><a href="?query=<?php echo $query; ?>&page=1">FirstPage</a></span> 
     @endif 

     {!! $books->appends(['query' => Input::get('query')])->render() !!} 

     @if($query == "") 
      <span><a href="?page={!! $books->appends(['query' => Input::get('query')])->lastPage() !!}">Last Page</a></span> 
     @else 
      <span><a href="?query=<?php echo $query; ?>&page={!! $books->appends(['query' => Input::get('query')])->lastPage() !!}">Last Page</a></span> 
     @endif 
    </div> 
</div> 
+0

它不工作 –

+0

即使我删除它返回我不是一个错误追加一部分,但它只是返回0-间酒店49和50-99之间的酒店留空 –

+0

我刚刚通过了我通过编辑器提供的html代码,它显示了一些语法和标记错误。我会在我的答案下发布修正的标记。我会建议您将其与您的版本进行比较,以了解更改内容。我不是声称这会解决你的问题,但它会使它更容易找到! – Spholt