У меня есть форма регистрации на моем сайте. Раньше это было правильно. Теперь я хотел отправить свою форму с помощью ajax и хотел вернуть переменную из контроллера в JSON, которую я буду использовать в файле лезвия.

Форма отправляется, и значения отображаются в базе данных, но после перенаправления возвращается ошибка.

Undefined variable: seller in report blade

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

Как мне заставить его работать?

Report-Blade

 @foreach(json_decode($seller, true) as $row)

  <a  href="{{route('Report', $row->id) }}" >
    {{ __('Show Report of ')}} {{$row->car_title}}
  </a>

 @endforeach

Контроллер

$seller = Sellers::take(1)->latest()->get();
   
return response(view('report',array('seller'=>$seller)),200, ['Content-Type' => 
'application/json']);

Javascript

$("#submit-all").click(function(e){
    e.preventDefault();
     var _token = $('input[name="_token"]').val();

    $.ajax({
        type: "post",
        url: "{{ route('form_for_private_sellers') }}",
        data : $('#msform').serialize() + "&_token=" + _token,

        dataType: 'JSON',
        beforeSend: function(){
            // Show loading image
            $("#se-pre-con").show();
        },
        success: function(data) {
            window.location = "http://127.0.0.1:8000/report/";
        },
        complete:function(data){
            // Hide loading image
            $("#se-pre-con").hide();
        }
    });
});
0
Shaan 1 Сен 2020 в 19:00

2 ответа

Лучший ответ

Как понятно из ваших комментариев,

window.location = "http://127.0.0.1:8000/report/";

Попадет в маршрут

Route::get('/report', function () {
  return view('report');
})->name('private_seller_report');

В колонке отчета ожидается переменная с именем $seller, и она не отправляется по маршруту. Вам нужно будет изменить маршрут на что-то подобное:

Route::get('/report', function () {
  $sellers = Seller::get(); //your logic
  return view('report', ['seller' => $sellers]);
})->name('private_seller_report');

В качестве альтернативы вы можете указать маршрут на метод в контроллере, если хотите избежать увеличения количества маршрутов.

1
user3532758 1 Сен 2020 в 16:48

Вам нужно два маршрута для этого

Сначала для рендеринга лезвия

return view('report');

И второй для продавца

$seller = Sellers::latest()->take(1)->get();
return $seller
1
Mohsen Bagheri 1 Сен 2020 в 16:31