我无法获取&item项目ID'的参数。为我的表格动作网址生成我的路线的末尾。
我有一个页面设置来更新'现有项目。路线看起来像这样:
Route::get('/item/edit/{id}', array(
'as' => 'item-edit',
'uses' => 'ItemController@getEditItem',
));
Route::post('/item/edit/{id}', array(
'as' => 'item-edit-post',
'uses' => 'ItemController@postEditItem',
));
我的ItemController包含以下方法:
public function getEditItem($id) {
$states = State::where('user_id', '=', Auth::user()->id)->get();
$types = Type::where('user_id', '=', Auth::user()->id)->get();
$item = Item::where('user_id', '=', Auth::user()->id)
->where('id', '=', $id)
->first();
return View::make('items.edit')
->with('item', $item)
->with('states', $states)
->with('types', $types);
}
public function postEditItem($id) {
// Validate input for Item changes
$validator = Validator::make(Input::all(),
array(
'label' => 'required|min:3|max:128|unique:items,label,null,id,user_id,' . Auth::user()->id,
'type_id' => 'required|integer',
'state_id' => 'required|integer',
)
);
if( $validator->fails() ) {
return Redirect::route('item-edit')
->withErrors($validator)
->withInput();
} else {
$item = Item::find($id);
$item->label = Input::get('label');
$item->type_id = Input::get('type_id');
$item->state_id = Input::get('state_id');
$item->save();
return Redirect::route('item-create')
->with('global', 'Your new item has been edited successfully!');
}
}
最后一块拼图是items.edit
视图:
@extends('layout.main')
@section('content')
<form action="{{ URL::route('item-edit-post', $item->id) }}" method="post" class="form-horizontal form-bordered" autocomplete="off">
<!-- some inputs and such -->
</form>
@stop
此处生成的操作网址错误:
<form method="POST" action="http://manageitems.com/item/edit/%7Bid%7D" accept-charset="UTF-8" hello="hello" class="form-horizontal form-bordered">
出于某种原因,它正在逃离路线中的{id}
,而不是在路线末端添加实际物品ID。我尝试了几种不同的方法来阅读路线参数文档,但我还没有取得任何进展。我也尝试过使用Laravel作为建设者:
{{ Form::open(array('action' => 'ItemController@postEditItem', $item->id, 'class'=>'form-horizontal form-bordered')) }}
但这也做了同样的事情。我是Laravel的新手,所以这可能是一个我忽略的简单问题,非常感谢任何帮助。
答案 0 :(得分:1)
在第二个参数中使用数组。
URL::route('item-edit-post', ['id' => $item->id])
或者route
帮助器(我会使用它,在视图文件中更适合)。
route('item-edit-post', ['id' => $item->id])
答案 1 :(得分:1)
似乎$item->id
返回null
。
当您在action
中指定route
或Form::open
时,就是这样做的。
Form::open(['route' => ['some.route', $param]]);
Form::open(['action' => ['controller@action', $param]]);