Как передать данные из контроллера в модальный диалог с помощью AJAX - PullRequest
0 голосов
/ 30 июня 2018

У меня есть предметы, и для каждого предмета есть связанные предметы, поэтому, когда я открываю домашнюю страницу, он отображает все предметы, и когда я хочу щелкнуть по любому предмету, ajax передает этот идентификатор элемента контроллеру, чтобы получить связанные предметы для этого Элемент, проблема в том, что я хочу показать связанный элемент в модальном диалоге, теперь в модальном диалоге отображаются все связанные элементы для всех элементов, а не для текущего элемента. Я думаю, что проблема заключается в том, что на главной странице, на которой есть foreach !, добавлено модальное сообщение! Надеюсь, вы поможете мне решить эту проблему

Маршрут

Route::get('/',['as'=>'showItems','uses'=>'HomeController@getItem']);
Route::get('Get_relateditem',['as'=>'Get_relateditem','uses'=>'HomeController@getItem']);

Аякс

$(function(){
$('.Item_root').on("click", function () {
var item_id = $(this).data('id');
 $.ajax({
    type:'get',
     url: '/',
       data: {
        '_token': $('input[name=_token]').val(),
       'item_id':item_id,                    
      },
    success:function(data){}
    }); 
   });
  });

контроллер

 public function getItem(Request $request)
 { 
 $currentitemid =$request->item_id;
  $ritems = Relateditem::orderBy('id', 'asc')->where('ritemf_id','LIKE','%'.$currentitemid.'%')->with('items')->get()->groupBy('ritemf_id');

 $items = Item::orderBy('category_id', 'asc')->with('category')->get()->groupBy('category_id');

$categories = Category::orderBy('category_id', 'asc')->get();

 return view('home')->with('items',$items)->with('categories',$categories)->with('ritems',$ritems);
}
}

модальный

@foreach($ritems as $item_id => $realtedItems)

 @foreach($realtedItems as $ritem)

  <div class="SuggestedItem_container">
 <label color="red" class="Checker_root Checker_red Checker_left">
      <input type="checkbox" class="Checker_input" value="on">
      <div class="SuggestedItem_nameContainer">
        <div>
     <span class="SuggestedItem_name">{{$ritem->riteml_id}}</span>

     <span class="SuggestedItem_price styles_small styles_base styles_spacing-base">+$3.95</span></div></div>

    <div class="SuggestedItem_description styles_small styles_base styles_spacing-base">
    <span class="SuggestedItem_category styles_bold">Appetizers</span>

    <span> · Edamame soybean pods harvested right before the beans begin to harden are lightly boiled and seasoned with sea salt.</span>
    </div>
  </label>
  </div>
 @endforeach
 @endforeach

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Вы должны использовать js для получения результата ajax get и отображения данных по модалу. Вы можете найти пример для отображения данных по модалу здесь.

https://github.com/durmus-aydogdu/real-time-application

Надеюсь, это поможет.

0 голосов
/ 01 июля 2018

Изменить маршруты:

Route::get('/','HomeController@getItem');
Route::get('/get_related_items/{id}','HomeController@getRelatedItems');

изменить getItem, чтобы получить только предметы и категории:

public function getItem(Request $request)
{
    $items = Item::orderBy('category_id', 'asc')
      ->with('category')->get()
      ->groupBy('category_id');
    $categories = Category::orderBy('category_id', 'asc')->get();
    return view('home',['items' => $items,'categories' => $categories]);
}

получить связанные предметы для одного элемента id:

public function getRelatedItems(Request $request, $id)
{
    $ritems = Relateditem::orderBy('id', 'asc')
        ->where('ritemf_id',$id)
        ->with('items')
        ->get()
        ->groupBy('ritemf_id');
    return response()->json($ritems);

}

теперь для части js:

$(function(){
  $('.Item_root').on("click", function () {
    var item_id = $(this).data('id');
    $.ajax({
      type:'get',
      url: '/get_related_items/' + item_id,
      data: {
        '_token': $('input[name=_token]').val()
      },
      success:function(data){
        if(data && data.length){
          var con_el = $('.SuggestedItem_container');
          for(var i = 0; i < data.length;i++){
            var related_item_el = "<div class='related_item'><p>" + data[i].id + "</p></div>"
            con_el.append(related_item_el);
          }
        }else{
          console.log('no related items found');
        }
      }
    });
  });
});

это вставит все связанные элементы в SuggestedItem_container

я не писал шаблон представления, потому что эта часть проста, и обратите внимание, что я включил только связанный идентификатор элемента в качестве примера, потому что я не знаю, какие поля у элемента. я надеюсь, что это поможет вам

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