Маршрутизация Laravel нарушена

Здравствуйте, я пытаюсь отправить запрос AJAX на свой store, но вместо этого он отправляется на show

        function submitForm() {
            $.ajax({
                type: 'POST',
                url: 'laptop/andy',
                data: {
                    routing: 'createM',
                    type: $('#type').val(),
                    body: $('#body').val()
                }
            })
        }

И если я попытаюсь оптимизировать php artisan, я получаю эту ошибку:

   LogicException  : Unable to prepare route [api/user] for serialization. Uses Closure.

  at C:\xampp\htdocs\blog\vendor\laravel\framework\src\Illuminate\Routing\Route.php:917
    913|      */
    914|     public function prepareForSerialization()
    915|     {
    916|         if ($this->action['uses'] instanceof Closure) {
  > 917|             throw new LogicException("Unable to prepare route [{$this->uri}] for serialization. Uses Closure.");
    918|         }
    919| 
    920|         $this->compileRoute();
    921| 

Странно то, что даже несмотря на то, что я закомментировал show из контроллера, движок все еще распознает маршрут как действительный.

<?php

Auth::routes();

Route::group(['middleware' => 'auth'], static function () {
    Route::get('/', 'HomeController@index')->name('home');

    Route::get('requestSent', 'TicketController@requestSent')->name('requestSent');
    Route::get('requestBusy', 'TicketController@requestBusy')->name('requestBusy');
    Route::get('requestAccepted', 'TicketController@requestAccepted')->name('requestAccepted');
    Route::get('requestDone', 'TicketController@requestDone')->name('requestDone');
    Route::resource('ticket', 'TicketController');

    Route::get('/phpmyadmin', static function () {
       return view('phpmyadmin');
    })->name('phpMyAdmin');

    Route::resource('laptop', 'LaptopController');

    Route::resource('user', 'UserController');

    Route::get('/servicepakket', static function () {
        return view('servicepakket');
    })->name('service');

    Route::get('requestRecent', static function () {
        return view('test');
    });
});


person Daniel Mer    schedule 31.10.2019    source источник
comment
Поправьте меня, если я ошибаюсь, но маршрут не хранится в контроллере. Он хранится в route/web.php. Комментирование маршрута в контроллере мало что даст   -  person IsThisJavascript    schedule 31.10.2019
comment
Не могли бы вы добавить свои маршруты к вопросу.   -  person Remul    schedule 31.10.2019
comment
@IsThisJavascript — это контроллер ресурсов.   -  person Daniel Mer    schedule 31.10.2019
comment
Давайте посмотрим ваши маршруты/web.php.   -  person victorf    schedule 31.10.2019
comment
Также кажется, что вы спрашиваете о двух разных проблемах. Он идет по неправильному маршруту, и вы не можете его оптимизировать (хотя я думаю, что сообщение об ошибке довольно ясно). Придерживайтесь одного вопроса на пост.   -  person Magnus Eriksson    schedule 31.10.2019
comment
Не нужно быть грубым. Я просто указываю, что вопросы здесь должны содержать одну проблему на пост, иначе они будут считаться слишком широкими и неконцентрированными и с большей вероятностью будут закрыты.   -  person Magnus Eriksson    schedule 31.10.2019
comment
URI для метода post для этого маршрута — /laptop, а не /laptop/andy.   -  person porloscerros Ψ    schedule 31.10.2019
comment
и есть ли у вас метод store в вашем LaptopController?   -  person victorf    schedule 31.10.2019
comment
что, если вы попытаетесь установить URL-адрес AJAX как '{{ route("laptop.store") }}'?   -  person victorf    schedule 31.10.2019
comment
Для ошибки artisan optimize убедитесь, что ни один из ваших маршрутов (как в routes/web.php, так и в routes/api.php не содержит замыканий) маршрутизация" rel="nofollow noreferrer">документация Laravel, если вы не знаете, что такое замыкание маршрута). Маршруты с замыканиями не позволяют работать таким командам, как artisan optimize и artisan route:cache.   -  person Alex    schedule 31.10.2019
comment
и почему вы хотите использовать маршрут с именем ноутбук/энди? Что такое Энди в этом контексте?   -  person victorf    schedule 31.10.2019
comment
@porloscerrosΨ Верно, это был ответ. Спасибо.   -  person Daniel Mer    schedule 31.10.2019
comment
@victorf 1. Да, 2. {{}} не работает в JS, а что, если бы код был в файле JS? 3. Энди был заполнителем для магазина на случай, если маршрут магазина был неправильным. 4. Я исправил это   -  person Daniel Mer    schedule 31.10.2019
comment
@Alex Вы видите замыкание где-нибудь в моем коде?   -  person Daniel Mer    schedule 31.10.2019
comment
@DanielMer Да, на самом деле несколько. /phpmyadmin, /servicepakket и /requestRecent все имеют замыкания, и это только в routes/web.php. Учитывая ошибку, в routes/api.php есть маршрут, использующий замыкания.   -  person Alex    schedule 31.10.2019
comment
@ Алекс, я предполагаю, что ты имеешь в виду / ?   -  person Daniel Mer    schedule 31.10.2019
comment
Нет, замыкание — это бит static function () {} и все, что внутри него. Если вы удалите эти биты и переместите их в контроллеры, вызывая их так же, как и с другими маршрутами (например, Route::get('/phpmyadmin', 'HomeController@phpmyadmin')->name('phpmyadmin'), вы сможете запустить команду optimize.   -  person Alex    schedule 31.10.2019
comment
@DanielMer Рад внести свой вклад. Не могу сейчас написать ответ, только читал и комментировал с мобилы, а с мобилы сложно написать ответ. В любом случае было бы хорошо закрыть вопрос с принятым ответом. Может быть, вы или кто-то другой может это сделать.   -  person porloscerros Ψ    schedule 31.10.2019


Ответы (1)


Отправьте имя andy в данных POST.

    function submitForm() {
        $.ajax({
            type: 'POST',
            url: '/laptop',
            data: {
                //routing: 'createM',
                name: 'andy',
                type: $('#type').val(),
                body: $('#body').val()
            }
        })
    }

Изменить: я думаю, что параметр routing в данных не нужен. Потому что операция POST вызовет операцию Store.

Ссылка: https://stackoverflow.com/a/54456577/1027360

person İlker Ergün    schedule 31.10.2019