如何使用多个参数制作Form :: model? 我有这样的示例路线。 www.domain.com/product/2/product-attributes/3/edit 在正常形式我可以这样做:
<form method="POST" action="{{ route('product.{product}.product-attributes.update', [$product->id, $product-attribute->id ]) }}"> </form>
但如果我试图像这样使用laravelcolective / html Form :: model():
Form::model($productattributes, array('method' => 'POST', array('route' => array('product.{product}.product-attributes.update', [$product->id, $product-attribute->id ])))
我得到一个错误数组到字符串转换...
====更新==============
我的路线:
Route::resource('backend/product', 'Backend\ProductController');
Route::resource('backend/product/{product}/product-attributes', 'Backend\ProductAttributesController',['except' => ['index']]);
=====更新2 =========================
答案 0 :(得分:3)
我只是尝试..如果正常路由使用数组传递多个参数。我猜Form :: model不需要使用数组,只需单独使用,
普通路线::
<form method="POST" action="{{ route('product.{product}.product-attributes.update', [$product->id, $product-attribute->id ]) }}"> </form>
Form Model ::
Form::model($productattributes, array('method' => 'POST', array('route' => array('product.{product}.product-attributes.update', $product->id, $product-attribute->id)))
答案 1 :(得分:1)
首先,我从未见过像你这样的花括号的路线名称:
product.{product}.product-attributes.update
不确定服务的目的是什么?也许你可以和我们分享你的路线?
对我来说,我会这样做......
假设您有路线:
Route::get('product/{product_id}/product-attributes/{product_atrribute_id}/edit',[
'as' => 'product.product-attributes.update',
'uses' => 'ProductController@updateProduct',
]);
然后你可以这样调用你的路线方法:
route('product.product-attributes.update',
['product_id' => product->id, 'product_atrribute_id' => $product-attribute->id ]
)
这里的区别(在你调用方法和我之间的方式)是我已经指定了与url中的键匹配的数组键。
至于打开表格,我认为你会把它联系起来:
(请注意我已经做了一些假设,因为你没有共享很多代码)
Form::model(
// pass it the product so the product id can be accessed directly
// and the attributes id can be accessed through relationship method
$product,
[
'method' => 'POST', [
'route' => [
'product.product-attributes.update', [
'product_id' => $product->id,
'product_attributes_id' => $product->attribute->id
]
]
]
]
)
请注意代码中的错误:product->id
应该是:$product->id
答案 2 :(得分:0)
看起来你应该使用一个嵌套资源&#39; (根据需要调整命名)
Route::resource('backend/product.attributes', 'Backend\ProductAttributesController',['except' => ['index']]);
路线(显示):
backend/product/{product}/attributes/{attributes}