2017-10-21 11 views
1

아약스를 사용하여 데이터베이스에서 선택 상자로 데이터를 검색하고 있습니다. 그룹을 선택하면 각각 내용을 표시해야합니다.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 컨트롤러보기의 두 가지보기로 구분해야합니다.

기본 문제는 초기 요청과 아약스 요청을 별도로 처리하지 않는다는 것입니다.

+0

두 개의 개별보기로보기를 분할 하시겠습니까? 어떻게이 일을 새로 시작 했는가 –

+0

@LearnProgramming 두 가지 별도의 블레이드 템플릿이 필요합니다. –

+0

그럼 내가 원하는 것을 가지고 별도의 견해를 가질 수 없기 때문에 다른 방법을 찾아야 할 것입니다. –

관련 문제