laravel 5.5.44 выбрасывает после роутера 302 Обнаружена ошибка - PullRequest
0 голосов
/ 23 октября 2018

Облицовка 302 Обнаружена ошибка при попытке обновления с использованием метода post в маршруте.

Маршрут

Route::post('update_article/{id}', 'ArticleController@update_article')->name('articles.update');

Редактировать блэйд формы

{!! Form::model($article, ['route'=>['articles.update', $article->id], 'method' => 'post', 'class' => 'form-horizontal form-stripe']) !!}

Контроллер

public function update_article(Request $request, $id)
    {
        $data = Article::find($id);
        $url = $this->url->to('/');       
        $data->image = $request->input('image');
        $data->title = $request->input('title');
        $data->description = $request->input('description');
        $data->user_id = Auth::id();
        $data->status = $request->input('status');


       if ($request->hasFile('image')) 
       {
        $f_imageName = time().'.'.request()->image->getClientOriginalExtension();
        request()->image->move(public_path('uploads/articles'), $f_imageName);
        $data->image =$url.'/public/uploads/articles/'.$f_imageName; 
       }
       else
       {
        $data->image = $request->input('image_hidden');    
       }

    $data->save();   
    Session::flash('success', 'articles has been updated');
    return redirect()->route('articles.index');
    }

Использование POST для обновления вместо PUT, поскольку я использую summernote.Когда я использую PUT, большой description обрезается.В summernote говорится, что это может произойти, если я не использую метод POST.

И есть также маршрут по умолчанию непосредственно перед маршрутом update_article для ресурсов статей:

Route::resource('articles', 'ArticleController');

Примечание: csrf token отправляется как _token params в пост-операции.Пока не могу найти решение.Я что-то пропустил?

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Наконец, я изменил структуру БД на тип text с varchar, и длинное описание не усекается с использованием метода PUT вместо POST в операции обновления.Итак, вернулись к маршрутизации по умолчанию, используя метод PUT в форме submit-

Route:

Route::resource('articles', 'ArticleController');

Теперь все работает, как и ожидалось.

0 голосов
/ 23 октября 2018

Если вы создали ресурс, как вы упомянули.

Route::resource('articles', 'ArticleController');

, затем удалите следующий код из вашего маршрута web.php и запустите код.

Route::post('update_article/{id}', 'ArticleController@update_article')->name('articles.update');
...