我想将所选项目的$ id传递给我的控制器进行更改。
它是我的index.blade.php(查看)代码
<table>
@foreach($posts as $p)
<tr>
<td>{{$p->title}}</td>
<td>{{substr($p->body,0,120).'[...]'}}</td>
<td>{{HTML::link('posts_show',' Preview',array($p->id))}}</td>
<td>{{HTML::link('posts_edit','Edit',array($p->id))}}</td>
<td>
{{Form::open(array('method'=>'DELETE','url'=>array('posts.delete',$p->id)))}}
{{Form::submit('Delete')}}
{{Form::close()}}
</td>
</tr>
@endforeach
</table>
但它没有将$ id传递给我的控制器方法。
谢谢你的时间。答案 0 :(得分:2)
您需要做的是设置路线参数。你的路线应该是这样的。
Route::get('post','postController@index');
Route::get('posts_create', function (){ return View::make('admin.newPost'); });
Route::get('posts_show/{id}','postController@show');
Route::get('posts_edit/{id}','postController@edit');
Route::post('posts_delete/{id}','postController@destroy');
如果您想使用命名路由{{ Form::open(array('url' => route('posts.edit', $p->id))) }}
,则需要设置这样的名称。
Route::post('posts_edit/{id}', array('uses' => 'postController@edit',
'as' => 'posts.edit'));
您可以在routing中查看laravel official documentation。
修改强>
目前,您的表单看起来就是这样。
{{ Form::open(array('url' => route('posts.edit', $post->id), 'method' => 'POST')) }}
在途中,
Route::post('posts_edit/{id}', array('uses' => 'postController@edit',
'as' => 'posts.edit'));
在PostController中,
public function edit($id)
{
// do something
}
我希望它可能有用。
答案 1 :(得分:0)
您的路线看起来名为posts.destroy
,如果是这种情况,您应该使用route
代替url
作为参数
{{Form::open(array('method'=>'DELETE','route'=>array('posts.destroy',$p->id)))}}
答案 2 :(得分:0)
这是我的路线:
Route::get('post','postController@index');
Route::get('posts_create', function (){ return View::make('admin.newPost'); });
Route::get('posts_show','postController@show');
Route::get('posts_edit','postController@edit');
Route::post('posts_delete','postController@destroy');
这是我的postController:
class postController extends BaseController{
public function show($id){
$post=Post::find($id);
$date=$post->persian_date;
return View::make('posts.show')->with('post',$post)->with('date',$date);
}
public function edit($id){
$post=Post::find($id);
if(is_null($post)){
return Redirect::route('posts.index');
}
return View::make('posts.edit')->with('post',$post);
}
public function update($id){
$input=array_except(Input::all(),'_method');
Post::find($id)->update($input);
return Redirect::route('posts.index');
}
public function destroy($id)
{
Post::find($id)->delete();
return Redirect::route('posts.index');
}