Php 将参数传递给Laravel中的控制器

Php 将参数传递给Laravel中的控制器,php,laravel,laravel-routing,Php,Laravel,Laravel Routing,我想将对象的id传递给laravel中的控制器。基本上,我有一个页面,显示与书籍相关的信息。用户可以选择将主题添加到该书中。下面的一行是他们单击的链接,以打开创建主题表单: <a href="{{action('ThemeController@create')}}" class="btn btn-primary">Add Theme</a> 目前,这将在下拉列表中显示我所有书籍的列表。我宁愿在将用户带到这个表单之前,将用户所读的书的id传递给用户,并使用它。我有办法做到

我想将
对象的
id
传递给
laravel
中的
控制器。基本上,我有一个页面,显示与
书籍相关的信息。用户可以选择将
主题添加到该书中。下面的一行是他们单击的链接,以打开创建主题
表单

<a href="{{action('ThemeController@create')}}" class="btn btn-primary">Add Theme</a>
目前,这将在下拉列表中显示我所有书籍的列表。我宁愿在将用户带到这个表单之前,将用户所读的书的
id
传递给用户,并使用它。我有办法做到吗?我还包括了我的
routes.php
文件:

Route::model('book', 'Book');
//Show pages
Route::get('/books', 'BookController@index');
Route::get('book/create', 'BookController@create');
Route::get('book/edit/{book}', 'BookController@edit');
Route::get('book/delete/{book}', 'BookController@delete');
Route::get('book/view/{book}', 'BookController@view');
////Handle form submissions
Route::post('book/create', 'BookController@handleCreate');
Route::post('book/edit', 'BookController@handleEdit');
Route::post('book/delete', 'BookController@handleDelete');


//Themes
Route::model('theme', 'Theme');
Route::get('/themes', 'ThemeController@index');
Route::get('theme/create', 'ThemeController@create');
Route::get('theme/edit/{book}', 'ThemeController@edit');
Route::get('theme/delete/{book}', 'ThemeController@delete');
Route::get('theme/view/{book}', 'ThemeController@view');
Route::post('theme/create', 'ThemeController@handleCreate');
Route::post('theme/edit', 'ThemeController@handleEdit');
Route::post('theme/delete', 'ThemeController@handleDelete');

您仍然可以使用普通的$\u-GET方法。 在您的路线上:
book/create
你可以简单地请求。
book/create?book_id=xxyy
然后在控制器中创建函数

public function create(){
    $bookId = Input::get('book_id');
    $books = Book::all()->where('book_id' => $bookId);
    return View::make('theme.create', compact('books'));
}
请注意: 我已经有一段时间没有使用Laravel了,不要相信Eleqont查询:P。。我只是在里面放了一个理论上的“where”

在这里,你会注意到:

“您不必担心用于请求的HTTP谓词,因为 所有动词的输入访问方式相同。”

因此,无论您使用的是get、put、post还是delete,无论您在标题中包装了什么,都可以使用
Input
Class来查找

编辑

只需要添加,您根本不需要修改您的路线。这只是GET请求中的一个简单GET参数。就像在任何其他应用程序中一样。

您仍然可以使用普通的$\u-GET方法。 在您的路线上:
book/create
你可以简单地请求。
book/create?book_id=xxyy
然后在控制器中创建函数

public function create(){
    $bookId = Input::get('book_id');
    $books = Book::all()->where('book_id' => $bookId);
    return View::make('theme.create', compact('books'));
}
请注意: 我已经有一段时间没有使用Laravel了,不要相信Eleqont查询:P。。我只是在里面放了一个理论上的“where”

在这里,你会注意到:

“您不必担心用于请求的HTTP谓词,因为 所有动词的输入访问方式相同。”

因此,无论您使用的是get、put、post还是delete,无论您在标题中包装了什么,都可以使用
Input
Class来查找

编辑

只需要添加,您根本不需要修改您的路线。这只是GET请求中的一个简单GET参数。就像在任何其他应用程序中一样。

我假设您没有使用Laravel的Artisan Controller Make功能?我没有将其用于
Conrollers
,但一直将其用于
迁移
啊,好吧,我建议您使用资源控制器。。你已经在使用这个结构了。然而,资源控制器将大大简化路由结构:)。当然,除非您不是在构建RESTful应用程序,并且不希望使用Put和Delete。那我就明白了。我假设你没有使用Laravel的Artisan Controller Make功能?我没有在
Conrollers
中使用它,但在
迁移中使用过它。啊,好吧,我建议使用资源控制器。。你已经在使用这个结构了。然而,资源控制器将大大简化路由结构:)。当然,除非您不是在构建RESTful应用程序,并且不希望使用Put和Delete。那我就明白了。