2015-04-23 168 views
0

我正在使用我的刀片視圖中的鏈接按鈕。代碼如下:按鈕重定向到錯誤路徑

<a href="conclusion" class='btn btn-default btn-sm'>End Case</a> 

該頁面的URL在此鏈接按鈕:

http://localhost/cases/137/responses/30 

我的按鈕的結果應該是

http://localhost/cases/137/responses/30/conclusion 

但它重定向到

http://localhost/cases/137/responses/conclusion 

我的laravel ro ute的定義是:

get('/cases/{id}/responses/{respId}/conclusion', '[email protected]'); 

它有什麼問題呢?我該怎麼做?

+0

結論頁面的laravel路徑定義在哪裏?你用laravel標記它,但你沒有提供與它相關的代碼。 – Luceos

+1

你是否在討論'get('/ cases/{id}/responses/{respId}/conclusion','HomeController @ conclusion');'在route.php中? –

回答

0

生成URL的保存方式是始終使用Laravels輔助函數。這樣您就不會有任何相對URL的問題,因爲它始終會生成完整的URL。你的情況action()將是合適的:

<a href="{{ action('[email protected]', [$id, $respId]) }}" class='btn btn-default btn-sm'>End Case</a> 

或者你可以給你的路線名稱:

get('/cases/{id}/responses/{respId}/conclusion', [ 
    'as' => 'conclusion', 
    'uses' => '[email protected]' 
]); 

然後:

<a href="{{ route('conclusion', [$id, $respId]) }}" class='btn btn-default btn-sm'>End Case</a> 
+0

我喜歡這個解決方案。但得到的URL 通過'http://本地主機/例/%7Bid%7D /響應/%7BrespId%7D/conclusion' 我想$ ID,並在此URL –

+0

啊,當然值$ respId。那麼你可以將它們從控制器傳遞到視圖,或者直接在視圖中使用'Route :: input('id')'。 (我更喜歡第一種方式) – lukasgeiter

0

重定向與當前路徑不相關。它相對於index.xxx。我建議你使用完全合格的路徑。

0

的問題是當前的URL指向一個文件,而不是一個文件夾:https://cdivilly.wordpress.com/2014/03/11/why-trailing-slashes-on-uris-are-important/

當使用相對h ref的實際指向當前文件夾中的文檔。雖然您當前的網址沒有結尾斜槓(/),但它被解釋爲文檔並且相對網址實際上會替換文檔名稱。

所以在這個時候你指向文件http://localhost/cases/137/responses/中的文件conclusion,因爲30也是「只是」該文件夾中的一個文件。

爲了解決您的問題,你應該打你的頁面文件夾http://localhost/cases/137/responses/30/它允許相對URL的href="conclusion"指向http://localhost/cases/137/responses/30/conclusion

爲了確保該工程在laravel,你的路線指向響應應該有一個結束/。更好的解決方案是使用laravel幫助程序函數(如route()action())生成到頁面的路徑;請參閱http://laravel.com/docs/5.0/helpers#urls