2015-10-15 65 views
0

在我的应用程序的管理区域,我想要一个表单,管理员可以通过它找到一个项目的ID并在那里显示项目细节。实施这个最好的方法是什么? 这是我曾尝试:Lravel 5.1如何通过from?查找数据库记录?

//route 
Route::get('admin/projects/{project_id}', '[email protected]'); 
//form 
    {!! Form::open(['action' => '[email protected]', '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 

我怎样才能解决这个问题?

+0

@ThomasSnijder我编辑了这个问题。 –

+0

将您的showProject部件添加到您检索项目的控制器中,我认为那里出了问题。 –

+0

@ThomasSnijder我添加了控制器方法。 –

回答

1

创建以下路线:

Route::get('admin/projects', '[email protected]'); 
Route::post('admin/projects', '[email protected]'); 
Route::get('admin/projects/{project_id}', '[email protected]'); 

在你getProject函数返回的是表示用户可以输入ID形式的视图。 (你已经有一个):

{!! Form::open(['action' => '[email protected]', '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() !!} 

在您的项目后功能,您只需发送一个重定向到管理/项目/ {PROJECT_ID}网址:

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')); 
} 
+0

非常感谢!它按预期工作。 –

0

试着改变你的控制器方法

public function showProject($project_id) 
{ 
    $project=Project::find($project_id); 
    return view('admin.projects.showProject', compact('project')); 
} 

你并不需要使用上获取路由请求。

+0

我试过这个,它不会工作。 –

+0

虽然您接受的解决方案完全相同。 – geoandri

相关问题