2014-05-21 46 views
2

在我的用戶頁面中,我在第二個選項卡中使用帶有兩個選項卡「Products」和「Followers」的div關於追隨者名單的分頁。 當我嘗試分頁時,不會返回到「產品」選項卡,我用戶調用Ajax。 但是當我嘗試運行它,我有一個錯誤500,GET的響應是:ErrorException,array_merge():參數#2不是數組,當我打電話時Ajax

{"error":{"type":"ErrorException","message":"array_merge(): Argument #2 is not an 
array","file":"\/Users\/utilisateur\/Desktop\/mamp\/ptf-l4\/vendor\/laravel\/framework\ 
/src\/Illuminate\/View\/Environment.php","line":117}} 

我不知道爲什麼,我不知道如何找到一個解決方案。

這是我的控制器:

public function show($id){ 

    // récupère les données de l'user et les produis qu'il partage 
    $show = $this->api->show($id); 

    // décode le json pour qu'il se réaffiche en array pour pouvoir l'exploiter 
    $json = json_decode($show->getContent()); 

    $json->followed = User::userFollowedPaginate($id); 

    LaravelMixpanel::identify(Auth::user()->mixpanel_id); 
    LaravelMixpanel::track('User show view'); 

    if(Request::ajax()) 
    { 
     $html = View::make('users.show', $json)->render(); 

     return Response::json(['html' => $html]); 
    } 

    return View::make('users.show') 
       ->with('user', $json); 
} 

我的API /控制器:

public function show($id){ 

    // récupère donnée de l'user et les produits qu'il échange 
    $data = User::with(array('products' => function($query){ 
               $query->whereNull('shared_at'); 
               $query->whereNull('deleted_at'); 
              }))->findOrFail($id)->toArray(); 

    // récupère le nb de produits qu'il échange en ce moment 
    $data['nbShareCurrently'] = Product::where('user_id', $id)->whereNull('shared_at')->whereNull('deleted_at')->count(); 

    // récupère le nb de produits qu'il a échangé depuis le début 
    $data['nbShared'] = Product::where('user_id', $id)->whereNotNull('shared_at')->count(); 

    return Response::json($data, 200); 
} 

我的JS:

function callAjaxUser(url) { 

    $.ajax ({ 
     type: "GET", 
     url: url , 
     success: function() { 
      console.log('Success '); 
     }, 
     error: function() { 
      console.log('Error '); 
     } 
    }); 
} 



$(document).ready(function(){ 
    $('body').on('click', ' .pagination a ', function(event){ 
     event.preventDefault(); 
     var url=$(this).attr('href'); 
     callAjaxUser(url); 
    }); 
}); 

而我的觀點:

@extends('default') 
@section('title') 
    Fiche de {{ $user->name }} 
@stop 
@section('contenu') 
    <section class="panel col-lg-8 col-sm-8 m-t-large"> 
     <header class="panel-heading m-l-n m-r-n"> 
      <ul class="nav nav-tabs pull-right"> 
       <li class="active"><a href="#product" data-toggle="tab"><i class="icon-list icon-large text-default"></i>Mes produits en cours de partage</a></li> 
       <li><a href="#follow" data-toggle="tab"><i class="icon-group icon-large text-default"></i>Mes abonnés</a></li> 
      </ul> 
      <span class="hidden-sm">Fiche technique du frigo</span> 
     </header> 
     <div class="panel-body"> 
      <div class="tab-content">    
       <div class="tab-pane active" id="product"> 
        <div class="col-lg-3"> 
         {{-- dd($user) --}} 
         <h4>{{{ $user->name }}}</h4> 
         @if($user->photo && File::exists(public_path().'/uploads/photos/users/'.e($user->photo))) 
          {{ HTML::image('uploads/photos/users/'.e($user->photo), e($user->name)) }} 
         @else 
          {{ HTML::image('template/images/avatar.jpg', e($user->name)) }} 
         @endif 
         @if($user->id!=Auth::user()->id) 
          @if(DB::table('user_followers')->where('user_followed', $user->id)->where('user_following', Auth::user()->id)->count()==0) 
           {{ HTML::decode(HTML::linkAction('[email protected]', '<i class="icon-heart">S\'abonner</i>', array('id' => $user->id), array('class' => 'btn btn-info m-t-large m-b-small'))) }} 
          @else 
           {{ HTML::decode(HTML::linkAction('[email protected]', '<i class="icon-heart">Se désabonner</i>', array('id' => $user->id), array('class' => 'btn btn-danger m-t-large m-b-small '))) }} 
          @endif 
         @endif 
        </div> 
        <div class="col-lg-9"> 
         <h4>Le frigo contient en ce moment :</h4> 
          <ul class="list-unstyled"> 
           @foreach($user->products as $product) 
           <li class="list-group-item bg m-b-small"> 
            <div class="media"> 
             @if(e($product->photo) && File::exists(public_path().'/uploads/photos/products/'.e($product->photo))) 
              <span class="pull-left img-product"> 
               <a href="{{ URL::action('[email protected]', $product->id) }}"> 
                {{ HTML::image('uploads/photos/products/'.e($product->photo), e($product->title), array('class' => 'img-rounded')) }} 
               </a> 
              </span> 
             @endif 
             <div class="media-body"> 
              <div><a href="{{ URL::action('[email protected]', $product->id) }}" class="h4">{{{ $product->title }}}</a></div> 
              <p>{{{ $product->description }}}</p> 
              <p class="pull-left">Quantité : <span class="label label-info">{{{ $product->quantity }}}</span></p> 
              <p class="pull-right">Prix : <span class="badge bg-danger">{{{ $product->price }}} €</span></p> 
             </div> 
            </div> 
           </li> 
          @endforeach 
         </ul> 
         <div class="pagination"> 
          {{-- $users->products->links() --}} 
         </div> 
        </div> 
       </div> 
       <div class="tab-pane" id="follow"> 
        <div class="row m-b-large"> 
         @if($user->followed!=NULL) 
          @foreach($user->followed as $user_followed) 
           <div class="panel col-lg-2 m-l-large m-t-large "> 
            <div class="col-lg-8 m-b-n-small col-md-offset-2 m-t-large text-center"> 
             @if($user_followed->photo && File::exists(public_path().'/uploads/photos/users/'.e($user_followed->photo))) 
              {{ HTML::image('uploads/photos/users/'.e($user_followed->photo), e($user_followed->name), array ('class' => 'img-circle')) }} 
             @else 
              {{ HTML::image('template/images/avatar.jpg', e($user_followed->name), array ('class' => 'img-circle')) }} 
             @endif 
             <h3>{{{ $user_followed->name }}}</h3> 
            </div> 
            <div class="col-lg-10 m-b-small center "> 
             @if(DB::table('user_followers')->where('user_followed', $user_followed->id)->where('user_following', Auth::user()->id)->count()==0) 
              {{ HTML::decode(HTML::linkAction('[email protected]', '<i class="icon-heart">S\'abonner</i>', array('id' => $user_followed->id), array('class' => 'btn btn-info btn-group-justified m-t-large m-b-small'))) }} 
             @else 
              {{ HTML::decode(HTML::linkAction('[email protected]', '<i class="icon-heart">Se désabonner</i>', array('id' => $user_followed->id), array('class' => 'btn btn-danger btn-group-justified m-t-large m-b-small '))) }} 
             @endif 
            </div> 
           </div> 
          @endforeach 
         @else 
          <div class="panel col-lg-8 col-lg-offset-2 m-t-large"> 
           <h4> Tu ne suis actuellement personne </h4> 
          </div> 
         @endif 
        </div>  
        <div class="col-lg-12"> 
         {{ $user->followed->links() }} 
        </div> 
       </div> 
      </div> 
     </div> 
    </section> 
@stop 
@section('js') 
    {{ Basset::show('usersPaginate.js') }} 
@endsection 
+1

除了如何使用'array_merge()'外,您已經顯示了所有內容。 –

+0

我不是使用array_merge,它是所有工作的代碼,控制器向視圖發送信息,當我使用分頁時,我調用js,並且當我用螢火蟲查看響應時,可以看到ErrorException:Array_merge。 .. – Malxiin

+0

難道是因爲從$用戶的信息恢復? – Malxiin

回答

3

我偶然發現這個問題,因爲它是laravel ErrorException, array_merge(): Argument #2 is not an array的第一個Google搜索結果。

儘管問題已經過去了一年,但仍然相關,因爲這發生在今天的Laravel 5.0中。如果沒有花時間消化所有的代碼,問題可能與您的情況相同,因爲它是在我的情況下:您將一個非數組作爲第二個參數傳遞給view::make()(無論是否有意)你必須傳遞一個數組。

問題行是這一個,在你的控制器:

$html = View::make('users.show', $json)->render();

鑑於$json似乎是一個對象,修復很簡單:

$html = View::make('users.show', compact('json'))->render();

我們希望,這答案將在未來幫助其他人。

+0

我仍然在使用Laravel 5.1,並且我愚蠢地試圖傳遞一個對象而不是數組作爲視圖的參數。在我的控制器中,我現在有:'返回視圖('path_to_view',$ array_of_parameters);' – DavidHyogo

相關問題