2016-06-11 20 views
0

在route.php結合,我有這樣的:路徑模型,與一個以上的參數

Route::get('sells/{sells}/{slug}', '[email protected]'); 

在RouteServiceProvided.php,我有這樣的結合:

$router->bind('sells', function($id, Route $route){ 
    $action = last(explode('@',$route->getActionName())); 
    return ($action == 'edit')? Sell::isActive()->owned()->findOrFail($id) : Sell::isActive()->findOrFail($id); 
}); 

正如你看到的,我有與{slug}無關。我想知道如何將slu pass塞入裝訂封口?

任何幫助表示讚賞。

+0

嘗試使用'使用' – ArtisticPhoenix

回答

1

傳遞給那個閉包的東西就是這樣,因爲你的代碼沒有調用它,但是fram ework是。您可以嘗試從路線獲取參數。在關閉你有,你可以拉參數:

$route->parameter('slug'); 
+0

謝謝。我不知道我可以從$ route中獲取參數。工作。 – Mojtaba

0

喜歡這張

function($id, Route $route) use($slug){ 
    //........... 

http://php.net/manual/en/functions.anonymous.php

參見實施例#3

這讓你在附加信息通過在定義的閉合的時間,(而不是在執行關閉時,它的調用參數)

+0

未定義的變量:slu 012 – Mojtaba

+0

「我想知道如何將slu pass傳入綁定關閉?顯然你必須知道這個slu,,所以你可以將它傳遞給閉包而不是$ slug。我認爲這很明顯。換句話說,slu is只是一個正常的變量,它並沒有神奇地填充。 – ArtisticPhoenix

+0

唯一的另一種方法是在閉包中出現一些代碼,然後找出slu,,不管是什麼。順便說一下,我不是一個laravel用戶。但這就是在PHP中關閉的方式。如果你沒有訪問調用參數(可以改變它們),那麼將信息傳遞給閉包的唯一兩個選擇是關鍵字'use'或者出去並從閉包內部獲取它們。 – ArtisticPhoenix

0

如果你並不真正需要使用「綁定」,用「get」或「後」來代替:

$router->get('sells/{sells}/{slug}', function($sell, $slug) 
{ 
    echo 'Sell ID: ' . $sell; 
    echo '<br>'; 
    echo 'Slug: ' . $slug; 
}); 
+0

謝謝。其實,我需要使用綁定。 – Mojtaba