我是Laravel的新手,并且遵循超级基础教程.然而,教程没有附带编辑记录部分,我试图扩展自己.
路线:
Route::controller('admin/products', 'ProductsController');
Run Code Online (Sandbox Code Playgroud)
控制器:
class ProductsController extends BaseController
{
public function getUpdate($id)
{
$product = Product::find($id);
if ($product) {
$product->title = Input::get('title');
$product->save();
return Redirect::to('admin/products/index')->with('message', 'Product Updated');
}
return Redirect::to('admin/products/index')->with('message', 'Invalid Product');
}
..ECT...
Run Code Online (Sandbox Code Playgroud)
我意识到控制器正在请求使用ID,但我无法弄清楚如何在表单发布/获取时将产品ID传递给它.
形成:
{{Form::open(array("url"=>"admin/products/update",'method' => 'get', 'files'=>true))}}
<ul>
<li>
{{ Form::label('title', 'Title:') }}
{{ Form::text('title') }}
{{ Form::hidden('id', $product->id) }}
..ECT...
{{ Form::close() }}
Run Code Online (Sandbox Code Playgroud)
我最初的想法是在表单URL中传递产品ID,如:
{{Form::open(array("url"=>"admin/products/update/{{product->id}}", 'files'=>true))}}
Run Code Online (Sandbox Code Playgroud)
但也没有运气.
我得到的错误是:
Missing argument 1 for ProductsController::postUpdate()
Run Code Online (Sandbox Code Playgroud)
有趣的是,如果我直接输入URL:
http://localhost/laravel/public/admin/products/update/3
Run Code Online (Sandbox Code Playgroud)
它有效并且id为3的项目被改变了.
那么任何人都可以帮助并通知我如何通过表单传递id?
非常感谢
这里的第一个问题是:
{{Form::open(array("url"=>"admin/products/update/{{product->id}}", 'files'=>true))}}
Run Code Online (Sandbox Code Playgroud)
这{{product->id}}有两个方面是错误的:
{{$product->id}}你要么必须这样写:
{{Form::open(array("url"=>"admin/products/update/".$product->id, 'files'=>true))}}
Run Code Online (Sandbox Code Playgroud)
或者你在你的routes.php文件中给你的路线命名,并这样做:
{{Form::open(array('route' => array('route.name', $product->id, 'files'=>true)))}}
Run Code Online (Sandbox Code Playgroud)
我更喜欢第二种方式.
您还可能需要查看表单模型Bingin