2014-07-20 64 views
0

我有成員數據的資源控制器。所有常用的資源功能,包括編輯功能都可以正常工作。我試圖在此控制器中添加其他編輯功能,以便我可以創建僅適用於成員模型數據的特定子集的視圖,因爲數據集相當大。所以,我已經設置了額外的路線和功能。但是當我嘗試鏈接到edit2資源時,Laravel不會創建適當的鏈接。我不知道我做錯了什麼。代碼:無法路由到第二個編輯資源Laravel-4

路線:

Route::get('members.edit2', array('as'=>'edit2', 'uses'=> '[email protected]')); 
Route::resource('members','MembersController'); 

MembersController:

// Regular edit function -- works just fine: 
    public function edit($id) 
{ 
    $member = $this->member->find($id); 
    return View::make('members.edit', array(
     'member'=>$member, ... 
    )); 
} 

// Extra edit2 function -- should work if I could successfully route to it: 
    public function edit2($id) 
{ 
    $member = $this->member->find($id); 
    return View::make('members.edit2', array(
     'member'=>$member, ... 
    )); 
} 

show.blade.php:

// normal edit link (works fine, see source code below): 
<a href="{{ URL::route('members.edit',$member->id) }}">edit</a> 

// additional edit2 link (creates a bad link, see source code below): 
<a href="{{ URL::route('edit2',$member->id) }}">edit</a> 

源代碼:

// normal link that uses edit for member id=27: 
<a href="https://zocios.com/members/27/edit">edit</a> 

// link that attempts to use edit2 for same member: 
<a href="https://zocios.com/members.edit2?27">edit</a> 

我相信有這樣做的方法。無論我使用的是命名路線'edit2'而不是'members.edit2',都會創建完全相同的錯誤鏈接。我嘗試了所有我能想到的組合。 Laravel文檔對此沒有任何幫助。謝謝!

回答

1

您不要像您應該那樣申報edit2路線。你的第一個錯誤是,你想編輯的成員的id沒有作爲參數傳遞,第二個通過調用{{route('edit2')}} Laravel期望一個永遠不會出現的網址,例如/members.edit2。你應該更好地使用像/members/{id}/edit2。 嘗試使用這樣的:

Route::get('members/{id}/edit2', array('as'=>'edit2', 'uses'=> '[email protected]')); 

,並調用它像:

{{ route('edit2', [$id]) }} 

另外要注意,當你調用Url::route()或者乾脆route()你應該通過像數組它們的參數:

{{route('myRoute', ['par1', 'par2', 'par3', ...]}} 
+0

非常感謝!這一切都非常有意義,而且它的工作原理與現在一樣。對於Laravel,我還是比較新的,但是現在都開始點擊了 - 並不像我想的那麼快,但是我到了那裏!我非常感謝你的幫助和非常明確的解釋。祝你有美好的一天! – flitedocnm

+0

謝謝,繼續嘗試它將肯定會付出努力。 –