Laravel redirect () -> действие не работает и показывает отсутствующие параметры - PullRequest
0 голосов
/ 12 января 2020

PHP Версия: 7.2 Laravel Версия: 6.2 Я делаю простой проект laravel по статье. Когда я встречаюсь с действием redirect () ->, я немного растерялся по этому поводу. Я хочу передать переменную с именем id через redirect () -> action, но она не работает. В сообщении об ошибке отсутствуют обязательные параметры для [Route: blog / post.show] [URI: blog / post / {post}]. Если я удалю имя переменной, передам только значение переменной, и оно будет работать. Я прочитал руководство, но все еще не мог понять причину. Не могли бы вы помочь мне объяснить логи c. Спасибо. Ниже приведен пример кода.

Маршрутизатор. php

Route::group(['prefix' => 'blog',
              'as' => 'blog/',
              'namespace' => 'Blog'],
              function(){
                    Route::resource('/post',"PostController");
              });

PostController. php

Создать новую запись в блоге (неправильно) Не могу понять, почему это не работает? Имя переменной ($ id) совпадает.

    public function store(Request $request)
    {
        $post = new BlogPost;
        $post->title = $title;
        $post->content = $content;
        $post->save();

        return redirect()->action(
            'Blog\PostController@show', ['id' => $post->id]
        );
    }

Создать новое сообщение в блоге (правильно)

    public function store(Request $request)
    {
        $post = new BlogPost;
        $post->title = $title;
        $post->content = $content;
        $post->save();

        return redirect()->action(
            'Blog\PostController@show', [$post->id]
        );
        //Or 'Blog\PostController@show', $post->id
    }

Показать новое сообщение в блоге

    public function show($id)
    {
        $post = BlogPost::find($id);
        if(! $post) {
            abort(404);
        }
        $content = $post->content;

        return view("blog.post", [
            "title" => $post->title,
            "content" => $content,
        ]);
    }

Спасибо вы

Ответы [ 2 ]

0 голосов
/ 13 января 2020

Вы получили сообщение об ошибке, потому что вы используете Resource Route, и оно автоматически c свяжет модель с маршрутом

Для получения дополнительной информации, пожалуйста, обратитесь: https://laravel.com/docs/6.x/routing#route -model-binding

0 голосов
/ 13 января 2020

Вот код:

return redirect()->route('routename', ['id' => 1]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...