Маршрут [product.store] не определен в laravel - PullRequest
0 голосов
/ 23 октября 2019

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

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

показывает, что маршрут [product.store] не определен. как я могу это исправить?

это в web.php

Route::get('/index', 'ProductController@index');
Route::get('/create', 'ProductController@create'); 
Route::post('','ProductController@store')->name('product.store');  
Route::get('/category/index', 'CategoryController@index');
Route::get('/category/create', 'CategoryController@create');
Route::post('','CategoryController@store')->name('category.store');

, когда я комментирую на // Route :: post ('', 'CategoryController @ store') -> name('category.store'); продавец может создать новый продукт, который он выполняет, но продавец не может создать новую категорию

это продукт / create.blade.php

<div class="container">
    <div class="row">
        @include('admin.includes.sidebar_admin')
         <div class="col-md-9">
              <div class="panel panel-primary">
      <div class="panel-heading">Create products</div>
      <div class="panel-body">


       <form action="{{route('product.store')}}" method="post" enctype="multipart/form-data">
        {{csrf_field()}}
         @csrf

это категория / создать.blade.php

<div class="container">
    <div class="row">
        @include('admin.includes.sidebar_admin')
         <div class="col-md-9">
              <div class="panel panel-primary">
      <div class="panel-heading">Create New Category</div>
      <div class="panel-body">


       <form action="{{route('category.store')}}" method="post">
        {{csrf_field()}}
         @csrf

Ответы [ 3 ]

1 голос
/ 23 октября 2019

В вашем web.php есть два перекрывающихся маршрута.

Route::get('/index', 'ProductController@index');
Route::get('/create', 'ProductController@create'); 
Route::post('','ProductController@store')->name('product.store');  //<----first one
Route::get('/category/index', 'CategoryController@index');
Route::get('/category/create', 'CategoryController@create');
Route::post('','CategoryController@store')->name('category.store'); //<----second one

Измените маршрут второго на другой, например:

Route::post('/category','CategoryController@store')->name('category.store');
0 голосов
/ 23 октября 2019

Проблема в том, как вы можете указать название маршрута в файле web.php. Вы переопределяете маршрут хранения вашего продукта с помощью маршрута магазина категории.

Route::post('','ProductController@store')->name('product.store');  
Route::post('','CategoryController@store')->name('category.store'); 

На мгновение вы можете подумать, что их название маршрута отличается, поэтому они не работают. Дело в том, что не работает имя маршрута предлагает некоторые особые преимущества. Допустим, вы хотите изменить маршрут на что-то вроде «product / create». Затем вы должны изменить их во всем проекте. Если они используются 5 раз, вы должны изменить их 5 раз, если 50 или более раз, я надеюсь, вы можете догадаться, сколько боли это будет. Чтобы получить облегчение от этого, название маршрута здесь. Где вы можете дать имя для маршрута и позвонить / отослать их с их именем. В результате в будущем, если вы измените маршрут на что-то другое, вам не нужно беспокоиться об изменении ссылки, поскольку имя все равно останется прежним. Но учтите, что название маршрута или route не может ссылаться или указывать на те же http глаголы . Здесь вы нарушили правила. Хотя название вашего маршрута другое, вы указываете один и тот же маршрут с теми же HTTP-глаголами ( POST ). Вот почему он отменяет предыдущий Route::post('','ProductController@store')->name('product.store'); с последним Route::post('','CategoryController@store')->name('category.store');. Так что для этого имени маршрута product.store неизвестно Laravel.

Некоторые другие незначительные исправления: По умолчанию файл / метод индекса запускаются. Так что вы можете заменить их

//Route::get('/', 'ProductController@index')
Route::get('/index', 'ProductController@index');  
//Route::get('/category', 'CategoryController@index')
Route::get('/category/index', 'CategoryController@index');
0 голосов
/ 23 октября 2019

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

, поэтому:

Route::post('','ProductController@store')->name('product.store');  

Может быть вместо этого:

Route::post('/products','ProductController@store')->name('product.store');  

И это:

Route::post('','CategoryController@store')->name('category.store');

Может быть:

Route::post('/categories','CategoryController@store')->name('category.store');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...