Контроллер Laravel не обрабатывает мои параметры просмотра

Ребята мне очень нужна ваша помощь.

У меня такой контроллер:

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::get('','')->name(routename);

ZeroOne 10.12.2018 14:37

можешь поделиться своим маршрутом?

Lakhwinder Singh 10.12.2018 14:48

Не совсем, это просто: Route :: resource ('/', 'BookController');

Alberto lopez jimenez 10.12.2018 14:48

Route :: resource ('/', 'BookController'); это все, что у меня есть на моем маршруте

Alberto lopez jimenez 10.12.2018 14:52

только что заметил, что в методе обновления вы используете book :: find ($ id) -> update ($ request-> all ()); вместо Book :: find ($ id) -> update ($ request-> all ());

CodeBoyCode 10.12.2018 14:53
127.0.0.1:8000/1/edit вот и все, что я получил от представления
Alberto lopez jimenez 10.12.2018 14:53

@codeBoyCode, я просто меняю его, спасибо братан, но проблема все еще существует

Alberto lopez jimenez 10.12.2018 14:55

@ AlbertoLópezJiménez, ха-ха, круто, круто - просто заметил это и подумал, что дам тебе знать. Я изучаю вашу проблему - надеюсь, скоро получу ответ

CodeBoyCode 10.12.2018 14:56
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
2
8
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В простом примере выполните следующие действия.

В вашем файле 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">

Alberto lopez jimenez 10.12.2018 15:07

[email protected]: splash.jalj / library-stock.git Вот репо, большое спасибо, братан

Alberto lopez jimenez 10.12.2018 15:12

В порядке. Дайте мне 10 мятных конфет, я проверю и предоставлю вам решение

Lakhwinder Singh 10.12.2018 15:14

Не забывай, пожалуйста :(

Alberto lopez jimenez 10.12.2018 15:46

Я исправил проблемы. но не могу отправить свой код на git.

Lakhwinder Singh 10.12.2018 15:50

скачать рабочий пример отсюда: drive.google.com/file/d/1MYsnrSref3ZmYfXhKKtmf0j0-j69R1Fq/…

Lakhwinder Singh 10.12.2018 15:55

Спасибо, братан, я проверю

Alberto lopez jimenez 10.12.2018 16:33

Другие вопросы по теме