2017-01-19 52 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); 
});