Метод POST не поддерживается с использованием Laravel 6 и ReactJS? - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь добавить некоторые данные в свою базу данных MySQL, используя Laravel 6 и ReactJS.

Я получаю эту ошибку:

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
The POST method is not supported for this route. Supported methods: GET, HEAD.

Я не являюсь конечно, где проблема, так как у меня есть метод POST в Маршрутах.

А вот мои файлы:

Маршруты: веб. php

Route::get('/{any?}', function () {
    return view('welcome');
});

Route::post('/addproduct', 'StoreProductsController@store');

Модель: Products. php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Products extends Model
{
    protected $fillable = ['name', 'stock', 'broken'];
}

Контроллер: StoreProductsController. php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Products;

class StoreProductsController extends Controller



{
    public function store(Request $request)
    {
        $products = new Products();

        $products->name = request('name');
        $products->stock = request('stock');
        $products->broken = request('broken');
        $products->save();

        return redirect('/storage');
    }
}

ReactJS Компонент: Хранение. js

<form method="post" action="/addproducts">

    <div class="form-row">
         <div class="form-group col-sm-12 col-md-6">
              <label for="inputNombreProductos">Producto</label>
                  <input type="text" class="form-control" id="inputNombreProductos" placeholder="Nombre del producto..." name="name"></input>
          </div>
          <div class="form-group col-sm-12 col-md-3">
               <label for="inputCantidadProductos">Cantidad</label>
                    <input type="text" class="form-control" id="inputCantidadProductos" placeholder="Cantidad de productos..." name="stock"></input>
           </div>

            <div class="form-group col-sm-12 col-md-3">
                  <label for="inputNombreProductos">Dañados</label>
                        <input type="text" class="form-control" id="inputNombreProductos" placeholder="Nombre del producto..." name="broken"></input>
            </div>
     </div>
     <button type="submit" className="btn btn-primary">Agregar</button>

Если кто-нибудь знает, как решить эту проблему, я был бы очень признателен. Заранее спасибо.

Когда я запускаю команду php Ремесленник: список вот что я получаю:

| Domain | Method   | URI        | Name | Action                                             | Middleware   |
+--------+----------+------------+------+----------------------------------------------------+--------------+
|        | POST     | addproduct |      | App\Http\Controllers\StoreProductsController@store | web          |
|        | GET|HEAD | api/user   |      | Closure                                            | api,auth:api |
|        | GET|HEAD | {any?}     |      | Closure                                            | web          |

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

вы можете использовать аннотации в вашем контроллере для добавления методов POST? В symfony я сделал это:

/**
     * @Route("/add_notification/{email}", name="add_notification", methods={"POST"})
     * @param Request $request
     * @param SerializerInterface $serializer
     * @return Response
     * @throws Exception
     */

Я не знаю, поддерживает ли Laravel это или нет

0 голосов
/ 26 февраля 2020

Вы никогда не должны создавать маршруты с подстановочными знаками, подобные этому

Route::get('/{any?}', function () {
    return view('welcome');
});

, потому что все ваши недопустимые маршруты будут сопоставлены с этим. Но в случае, если по какой-то причине вам нужно это попробовать, переместите его в конец файла маршрута.

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