#php #laravel
#php #laravel
Вопрос:
редактирование не работает, когда я нажимаю на кнопку редактирования, оно восстанавливает значения входных данных, но не изменяет их в базе данных
Edit.blade.php
@extends('index')
@section('content')
<script language="javascript" type="text/javascript" src={{ URL::to('js/extension.js') }}></script>
<div class="form-group" style="margin-top: 100px;">
<form class="forms-sample" action="/documentSideBar" method="get" enctype="multipart/form-data">
@csrf
@method('PATCH')
<div class="form-group">
<label for="nomDocument">Nom document</label>
<input type="text" class="form-control" id="nomDocument" name="nomDocument"
value="{{$document->nomDocument}}" onChange='getoutput2()'>
</div>
<div class="form-group">
<label for="description">Description</label>
<input type="text" class="form-control" id="description" name="description"
value="{{$document->description}}">
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group row">
<label class="col-sm-3 col-form-label">Type</label>
<div class="col-sm-9">
<select class="form-control">
<option>Documents administratifs</option>
<option>Documents financiéres</option>
</select>
</div>
</div>
</div>
</div>
<div class="form-group">
<label for="fille">Importer un fichier</label>
<input type="file" onChange='getoutput()' name="file" id="fille" class="form-control">
<input id='extension' type='hidden' name='extension'>
<input id="pathe" type="hidden" name="path">
</div>
<button type="submit" class="btn btn-success mr-2">Modifier</button>
<button class="btn btn-light">Annuler</button>
</form>
</div>
@endsection
documentSideBar.blade.php
<td style="width:300px">
<a href="/download/{{$document->id}}" class="btn btn-success"><i
class="glyphicon glyphicon-download-alt"></i></a>
<a href="/documentSideBar/{{$document->id}}/edit" style="float:right" class="btn btn-primary">
<i class="glyphicon glyphicon-edit"></i>
</a>
<form action="{{ action('DocumentsController@destroy', $document->id)}}" method="POST">
@method('DELETE')
@csrf
<button class="btn btn-danger"><i
class="glyphicon glyphicon-trash"></i></button>
</form>
</td>
это метод редактирования и обновления в контроллере
DocumentsController.php
public function edit($id)
{
$document = Document::findOrFail($id);
return view('documents.edit', compact('document'));
}
public function update(Document $document)
{
$document->nomDocument = request('nomDocument');
$document->description = request('description');
$d=request('path');
if(isset($d)){
$document->path ='username'.'/'.request('path');
}
$document->save();
return redirect('/documentSideBar');
}
public function show($id)
{
$document = Document::findOrFail($id);
return view('documentSideBar', compact('document'));
}
также я я хочу настроить кнопки, я не знаю, как сделать пробел между ними
Ответ №1:
ошибка была в web.php : вот правильный маршрут
Route::resource('documentSideBar','DocumentsController');
Route::get('download/{id}','DocumentsController@download');
Route::get('show/{id}','DocumentsController@show');
Route::post('/update/{id}','DocumentsController@update');
Ответ №2:
Вы должны изменить свой метод формы на POST и изменить свое действие на шаблон ресурса:
<form class="forms-sample" action="{{route('documentSideBar.update', $document->id)}}" method="POST" enctype="multipart/form-data"
@csrf
@method('PATCH')
Когда вы изменяете данные в своей базе данных, вы должны использовать POST, а не GET.
Взгляните сюда, чтобы увидеть больше информации о методах.
Вам также следует взглянуть на раздел «Контроллер ресурсов«, чтобы больше понять, что вы используете
Комментарии:
1. я уже пробовал это, и я получил эту ошибку Метод ИСПРАВЛЕНИЯ не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD, POST.
2. Метод ИСПРАВЛЕНИЯ, который вы указали в директиве blade
method('PATCH')
, в вашем теге формы, как сказано выше, метод должен быть POST3. И если вы обновляете все атрибуты из документа, вам следует использовать метод PUT.
4. я пробую это, как вы сказали, и это не работает, я не знаю, в маршруте ошибка или в методе, ‘<класс формы=»forms-sample» action =»/documentSideBar» метод =»post» enctype =»multipart /form-data»> @csrf @method(‘PATCH’)’
5. извините за опоздание, вот маршрут : Route::resource(‘documentSideBar’,’DocumentsController’); Route::get(‘download /{id}’,’DocumentsController@download’); Route::get(‘show/{id}’,’DocumentsController@show’); Route ::post(‘/update/{id}’,’ DocumentsController @update’); но я заставляю его работать, изменяя его на этот маршрут