查找当前的模型ID(有很多关系)

问题描述 投票:1回答:5

我有一个laravel应用程序,允许用户添加评论到书。

我的路线是:

Route::get('/books/{book}/addreview', 'ReviewController@create'); 
Route::post('books/{book}/review', 'ReviewController@store');

我的评论控制器看起来像:

public function create(Book $book) {
    return view('/reviews/create');
}

public function store(Book $book){
     $this->validate(request(),[
        'title' => 'required',
        'body' => 'required'
     ]);

     Review::create([
        'title'=>request('title'),
        'body'=>request('body'),
        'user_id'=>auth()->id(),
        'book_id'=>$book->id
     ]);
    // return redirect('/books');

}

但是,我得到'Undefined variable:book' - 所以我找不到当前的书ID。我怎样才能找到当前的书籍ID并将其传递给视图?

php laravel laravel-5
5个回答
1
投票

在审查控制器:

public function create(Book $book) {
    return view('reviews.create', compact('book'));
}

在视图中:

{{ $book->id }}

0
投票

您必须发送数据才能查看。

public function create(Book $book) {
    return view('reviews.create', ['book' => $book]);
}

0
投票

您没有向视图传递任何内容,您需要将数据显式传递给它以便可以使用它:

return view('reviews.create', ['book' => $book]);

然后在你看来,如果你可以使用qazxsw poi访问书籍:

$book->id

0
投票
Book ID is {{ $book->id }}.

在你的控制器中渲染// here I add some custom name to this route which will help to generate // a corresponding URL in the view by passing this name // route('routename') Route::get('/books/{book}/addreview', 'ReviewController@create')->name('review.create'); Route::post('/books/{book}/review', 'ReviewController@store')->name('review.store'); 视图你必须传递对应于你的路线中的当前模型绑定的review.create像这样

$book

在创建表单时的相应视图中,您必须像这样指定public function create(Book $book){ return View::make('reviews.create', ['book' => $book]); } 属性

action

0
投票

你应该添加<form action={{ route('review.store', $book)}} method="post"> {{ csrf_field}} 而不是公共功能商店(Book $ book)

因为您没有共享您的Book请求文件。

© www.soinside.com 2019 - 2024. All rights reserved.