2015-10-15 30 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

相關問題