2017-01-19 77 views
0

我有疑問。我一直在檢查laracasts並顯示出從路由器傳遞變量(S)到一個視圖的一些例子:Laravel,通過變量來查看

Route::get('about', function() { 
    $people = ['Eduardo', 'Paola', 'Chancho']; 
    return view('about')->with('people', $people); 
}); 

Route::get('about', function() { 
    $people = ['Eduardo', 'Paola', 'Carlos']; 
    return view('about')->withPeople($people); 
}); 

第二個例子,我不知道Laravel如何處理它。我知道它的工作原理我已經測試過,但他們使用哪種模式?爲什麼有可能處理一個動態變量。

在此先感謝您的幫助!

+0

我想我錯過的那部分,任何具體的意見,而不是一個一般的鏈接? – Eduardo

+0

你甚至都不明白這個問題。你應該收到罰款沒有理由downvoting和給予毫無意義的答案... – Eduardo

+0

夥計們,請看看這個問題。這是一個非常有效的問題。不要像這樣downvote – Paras

回答

2

第二個是由Laravel通過php的__call魔術方法處理。這種方法重定向通過這個代碼在Illuminate\View\View類開始與「用」的使用方法的所有方法:

public function __call($method, $parameters) 
    { 
     if (Str::startsWith($method, 'with')) { 
      return $this->with(Str::snake(substr($method, 4)), $parameters[0]); 
     } 
     throw new BadMethodCallException("Method [$method] does not exist on view."); 
    } 

正如你可以看到,如果該方法以「與」 (Str::startsWith($method, 'with'),Laravel它重定向到方法return $this->with以第一個參數作爲後面的字符串'with'Str::snake(substr($method, 4))和第二個參數作爲第一個參數通過$parameters[0]

希望這有助於!

+0

真棒,這是我正在尋找的答案。沒有理由的應該對downvoters罰款。 – Eduardo

+0

乾杯@Eduardo,他們不明白這個問題。我會upvote你讓計數回到零 – Paras

+0

真棒,謝謝! – Eduardo

0

試試這個,它的工作原理。

Route::get('about', function() { 
    $people = ['Eduardo', 'Paola', 'Chancho']; 
    return view('about',compact('people')); 
}); 
0

試試這個來傳遞數據,鑑於

Route::get('about', function() { 
$data['people'] = ['Eduardo', 'Paola', 'Chancho']; 
return view('about')->withdata($data); 
});