Ребята мне очень нужна ваша помощь.
У меня такой контроллер:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Book;
class BookController extends Controller
{
public function index()
{
$books = Book::orderBy('id', 'DESC')->paginate(5);
return view('index', compact('books'));
}
public function create()
{
return view('add');
}
public function store(Request $request)
{
$this->validate($request, ['titulo' => 'required', 'npaginas' => 'required', 'edicion' => 'required', 'autor' => 'required', 'resumen'=>'required', 'precio'=>'required']);
Book::create($request->all());
return redirect()->route('index');
}
public function edit($id){
return view('edit');
}
public function update(Request $request, $id)
{
$this->validate($request, ['titulo' => 'required', 'npaginas' => 'required', 'edicion' => 'required', 'autor' => 'required', 'resumen'=>'required', 'precio'=>'required']);
book::find($id)->update($request->all());
return redirect()->route('book.index');
}
public function destroy($id)
{
Book::find($id)->delete();
return redirect()->route('index');
}
}
У меня есть представление, отправляющее id из book в функции редактировать и разрушать. Однако я получаю только ошибку 404.
Это мнение:
@if ($books->count())
@foreach($books as $book)
<tr>
<td>{{$book->titulo}}</td>
<td>{{$book->npaginas}}</td>
<td>{{$book->edicion}}</td>
<td>{{$book->autor}}</td>
<td>{{$book->resumen}}</td>
<td>${{$book->precio}}</td>
<td><a class = "btn btn-primary btn-xs margen-boton"
href = "{{ action('BookController@edit', $book->id) }}"><span
class = "fas fa-pencil-alt"></span></a>
</td>
<td>
<form action = "{{ action('BookController@destroy', $book->id )}}"
method = "post">
{{csrf_field()}}
<input name = "_method" type = "hidden" value = "DELETE">
<button class = "btn btn-danger btn-xs margen-boton2" type = "submit"><span
class = "fas fa-trash-alt"></span></button>
</form>
</td>
</tr>
@endforeach
@else
<tr>
<td colspan = "8" class = "text-center"><p>Sin libros en el inventario</p></td>
</tr>
@endif
По правде говоря, я меняю имя переменной book, но это ничего не делает.
Я пытаюсь изменить имя контроллера на представление, потому что я думал, что это проблема. но это не работает. Я действительно не знаю, что мне делать.
Если бы ты мог мне помочь, это было бы здорово
можешь поделиться своим маршрутом?
Не совсем, это просто: Route :: resource ('/', 'BookController');
Route :: resource ('/', 'BookController'); это все, что у меня есть на моем маршруте
только что заметил, что в методе обновления вы используете book :: find ($ id) -> update ($ request-> all ()); вместо Book :: find ($ id) -> update ($ request-> all ());
@codeBoyCode, я просто меняю его, спасибо братан, но проблема все еще существует
@ AlbertoLópezJiménez, ха-ха, круто, круто - просто заметил это и подумал, что дам тебе знать. Я изучаю вашу проблему - надеюсь, скоро получу ответ






В простом примере выполните следующие действия.
В вашем файле web.php используйте это
Route::get("/edit/{id}", ["as" => "books.edit", "uses" => "BookController@edit"]);
После этого здесь в коде BookController должен быть такой
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Book;
class BookController extends Controller
{
public function index()
{
...
}
public function create()
{
...
}
public function store(Request $request)
{
....
}
public function edit($id){
return view('edit', [
'id' => $id
]);
}
}
И в вашем файле index.blade.php вам нужно создать ссылку, подобную этой
<a class = "btn btn-primary btn-xs margen-boton"
href = "{{ route('books.edit', ['id' => $book->id]) }}">
<span class = "fas fa-pencil-alt"></span>
</a>
Это будет работать именно так, как вы хотите.
Спасибо, братан, но он показывает другую ошибку :( "Неопределенная переменная: книга (View: /Users/alberto/Projects/libreria2/resources/views/edit.blade .php)" В моем представлении редактирования у меня есть: <form method = "post" action = "{{route ('book.update', $ book-> id)}}" role = "form">
[email protected]: splash.jalj / library-stock.git Вот репо, большое спасибо, братан
В порядке. Дайте мне 10 мятных конфет, я проверю и предоставлю вам решение
Не забывай, пожалуйста :(
Я исправил проблемы. но не могу отправить свой код на git.
скачать рабочий пример отсюда: drive.google.com/file/d/1MYsnrSref3ZmYfXhKKtmf0j0-j69R1Fq/…
Спасибо, братан, я проверю
у вашего маршрута есть название для каждого вашего действия? пример:
Route::get('','')->name(routename);