2017-10-21 41 views
1

私はajaxを使用して、データベースから選択ボックスにデータを取得しています。グループを選択すると、それぞれの内容が表示されます。Ajaxを使用してデータベースからデータを取得する - Laravel

フォームを表示しようとすると、Undefined variable: packagesと表示されますが、私のコントローラのビューにパッケージが返されています。

紛失しているものはありますか?

PackageController

public function create() 
    { 
     $groups = Group::all(); 
     $selectedGroup = $group->pluck('id')->toArray(); 
     return view('group.detail',compact('selectedGroup','groups')); 
    } 


    public function getpackages($id) 
    { 
    $groups = Group::findOrFail($id); 
    $packages= $groups->packages; 

    return view('group.detail',compact('packages')); 
    return $id; 

    } 

group.details.blade.php

<div class="input-group control-group after-add-more"> 

      <div class="form-group"> 
      <!-- <label for="select" class="col-lg-2 control-label">Select Item</label> --> 
      <div class="col-lg-10"> 
      <select class="form-control" id="group" name="group[]" mulitple> 
      @foreach($groups as $group) 
      <option value="{!! $group->id !!}" @if(in_array($group->id, $selectedGroup)) selected="selected" @endif > 
         {!! $group->name!!} 
      </option> 
       @endforeach 
      </select> 


      </div> 


      </div> 


      <div class="form-group"> 
      <!-- <label for="select" class="col-lg-2 control-label">Select Item</label> --> 
      <div class="col-lg-10"> 
      <select class="form-control" id="remove_select" name="packages" mulitple> 
      @foreach($packages as $package) 
      <option value="{!! $package->id !!}" > 
         {!! $package->name!!} 
      </option> 
       @endforeach 
      </select> 



      </div> 


      </div> 


<script> 
$('#category').change(function(e) 
{ 
e.preventDefault(); 

$y = $(this).val(); 
    alert($y); 

$.ajax 
({ 
url: '{{ url('getpackages') }}/'+$y, 
type: 'GET', 
dataType: 'json', 
success: function(data) 
{ 
console.log(data); 
} 
}); 
}); 
</script> 

答えて

0

あなたのコントローラーアクションの両方が同じビューを使用しているが、それらのどちらも、すべての中で渡していますビューが期待する値。 createコントローラーアクションでビューが読み込まれるときには、$packages変数が定義されていないため、この通知が表示されます。

コントローラの操作はcreate、コントローラの操作はgetpackagesの2つのビューに分割する必要があります。

ここでの根本的な問題は、あなたの最初のリクエストとあなたのajaxリクエストを別々に扱っていないことだと思います。

+0

ビューを2つの別々のビューに分割しますか?どうすればいいですか? –

+0

@ LearnProgramming 2つの別々のブレードテンプレートが必要ですが、1つではありません。 –

+0

それから、別の方法を見つけなければならないでしょう。なぜなら、私は達成したいものと別々のビューを持つことができないからです。 –