Контроллер может получить доступ к опубликованным данным в update (), но не в store () при Laravel 7. Проблема с маршрутизацией или нет? - PullRequest
0 голосов
/ 05 апреля 2020

Я не могу получить доступ к опубликованным данным в моем store() -методе в Laravel. Очень простая cms-система цитат в Laravel 7 хорошо работает для уничтожения и обновления записей цитат, но я не могу хранить новые.

Я отследил проблему до store() -метода нет получение доступа к опубликованным данным в $request.

В моем QuotesController.php:

print_r("request-title:".$request->input('title'));

мне ничего не дает в store(), хотя update() работает отлично. Взгляд на запрос (print_r("<code> $request"); ) говорит мне, что store() не имеет пустого $request:

POST /quotes/store HTTP/1.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding: gzip, deflate Accept-Language: en-us Connection: keep-alive Content-Length: 47 Content-Type: application/x-www-form-urlencoded Cookie:

My QuotesController.php содержит

use Illuminate\Http\Request;
use App\Quote;
class QuotesController extends Controller
{
    /**
     * @param  \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        print_r("request-title (store):".$request->input('title'));die();
    }
    /**
     * Update the specified resource in storage.
     * @param  \Illuminate\Http\Request $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        print_r("request-title (update):".$request->input('title'));die();
    }

В моем view я делаю форму для create примерно так:

<form action="store" method="POST">
  @csrf
  <input type="text" class="form-control" id="title">
  <button type="submit" class="btn btn-primary">Go</button>
</form>

Я подозреваю, что мои проблемы происходят из-за плохой маршрутизации. Чтобы найти ошибки маршрутизации, я набрал каждый маршрут явно в web.php:

Route::get('/quotes/populate', 'QuotesController@populate')->name('quotes.populate');
Route::get('/quotes/{id}', 'QuotesController@show')->name('quotes.show');
Route::get('/quotes/create', 'QuotesController@create')->name('quotes.create');
Route::post('/quotes/store', 'QuotesController@store')->name('quotes.store');
Route::get('/quotes/{id}/edit', 'QuotesController@edit')->name('quotes.edit');
Route::post('/quotes/{id}/update', 'QuotesController@update')->name('quotes.update');
Route::get('/quotes/{id}/destroy', 'QuotesController@destroy')->name('quotes.destroy');
Route::get('/quotes', 'QuotesController@index')->name('quotes.index');

В QuotesController::update(), между тем, все хорошо и $request->input('title') содержит опубликованные данные.

Где я иду не так? Почему мои опубликованные данные не отображаются в store(), как в update()

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