2017-07-28 89 views
0

我在routes.php文件文件中定義如下路線:Laravel線路生成

Route::get('/configuration/{id}', '[email protected]'); 

我試圖生成鏈接直接在我的刀片模板在標籤這條路線的基礎上,選擇。

$url = '{{route('configuration', 1)}}'; 

但我收到一個錯誤,說Route [configuration]沒有定義。

另外,如何在這個路由代中使用一個變量。以下內容失敗,出現錯誤,即變量ID未定義,儘管它已被定義和初始化。

$url = '{{route('configuration', $id)}}'; 
+0

我真的,真的是鼓勵e你重新瀏覽文檔。在這裏有很多真正基本的錯誤,文檔可以幫助您避免。 – ceejayoz

回答

1

您需要give your route a name才能像這樣使用它。

Route::get('/configuration/{id}', '[email protected]') 
    ->name('configuration); 

至於$id,要小心可變範圍。它可以在控制器中定義,但這並不意味着它存在於視圖中。你需要pass it to the view,是這樣的:

return view('configuration', ['id' => $id]); 

至於route()通話使用$id,每文檔,you need to pass an array of data

$url = '{{route('configuration', ['id' => 1])}}'; 

,並作爲位,你可以」在PHP代碼中使用刀片指令就是這樣,所以它會更類似於:

$url = route('configuration', ['id' => 1]); 
+0

感謝您的評論。我可以現在路線很好。但是'$ url = route('configuration',['id'=> 1]);'我需要根據用戶選擇動態路由,因此對此值進行硬編碼將無法工作。有關如何在Laravel/Blade模板中完成動態路由的任何建議?我想要做的是如果用戶選擇itemid = 1,我想要顯示該項目的所有配置,因此url應該像「http:// localhost:80/configuration/1」,並且如果用戶選擇項目#2,要加載的網址應該是「http:// localhost:80/configuration/2」。任何想法如何實現這個?謝謝! – N0000B

+0

不要反套。 '$ url = route('configuration',['id'=> $ id]);' – ceejayoz

+0

再次感謝。我想我知道爲什麼這個$ id變種導致一個問題。此代碼是js函數的一部分 - 當選擇更改爲下拉元素時,會調用它。 $ id變量在該函數中定義爲包含當前選定的itemId(客戶端變量)和函數route('configuration',['id'=> $ id]);'在服務器端執行由PHP。所以這個$ id變量目前不可用,導致錯誤。正如我剛剛複製以下JavaScript功能,它仍然是一個錯誤。 '$ url = route('configuration',['id'=> $ id]);' – N0000B