在我的应用程序的管理区域,我想有一个表单,通过它的管理员可以找到一个项目的id和显示那里的项目详细信息。实现这一点的最佳方法是什么?这是我尝试过的:
//route
Route::get('admin/projects/{project_id}', 'AdminController@showProject');
//form
{!! Form::open(['action' => 'AdminController@showProject', 'method' => 'get']) !!}
{!! Form::label('project_id', 'Project Id', ['class' => 'control-label']) !!}
{!! Form::text('project_id', null, ['class' => 'form-control']) !!}
{!! Form::submit('Submit', ['class' => 'form-control']) !!}
{!! Form::close() !!}
//controller method
public function showProject(Request $request)
{
$project=Project::find($request->get('project_id'));
return view('admin.projects.showProject', compact('project'));
}
它几乎工作,但没有什么问题。检索所请求的项目后,ULR如下所示:
admin/projects/%7Bproject_id%7D?project_id=5
我希望它是这样的:
admin/projects/5
我该如何解决这个问题?
创建以下路由:
Route::get('admin/projects', 'AdminController@getProject');
Route::post('admin/projects', 'AdminController@postProject');
Route::get('admin/projects/{project_id}', 'AdminController@showProject');
在getProject函数中返回一个视图,该视图显示用户可以在其中输入ID的表单。(你已经有的):
{!! Form::open(['action' => 'AdminController@postProject', 'method' => 'post']) !!}
{!! Form::label('project_id', 'Project Id', ['class' => 'control-label']) !!}
{!! Form::text('project_id', null, ['class' => 'form-control']) !!}
{!! Form::submit('Submit', ['class' => 'form-control']) !!}
{!! Form::close() !!}
在你的postProject函数中,你只需发送一个重定向到admin/project/{project_id} URL:
public function postProject(Request $request)
{
return redirect('admin/projects/' . $request->project_id);
}
在showProject函数中,您只需检索记录并返回包含信息的视图:
public function showProject($ProjectID)
{
$project=Project::find($ProjectID);
return view('admin.projects.showProject'),
->with('Project', compact('project'));
}
尝试将控制器方法更改为
public function showProject($project_id)
{
$project=Project::find($project_id);
return view('admin.projects.showProject', compact('project'));
}
你不需要在get路由中使用request