[英]How does Laravel's “withVariableName” works?
查看Laravel代码,我发现它们正在使用以下方法将变量从“路线”传递到“视图”:
$arraysan = ['mike','robert','john']; **//Variable to be passed**
return view('home')->withArraysan($arraysan); **//Variable passed with** name "withArraysan"
在上面的语法中,它们调用了一个不存在的名为withArraysan
的函数。
有人可以解释一下如何在Laravel中处理它吗?
一段时间以来,PHP有了magic methods
的概念-这些是特殊方法,可以将其添加到类中以拦截不存在的方法调用。
看来,Laravel浏览器__call
-这则拦截的对象对一个未定义的方法的调用,并传递这两个方法的名字被称为以及参数。 通过这种方式,视图对象就可以看出, withArraysan
呼叫开始with
和调用的具体方法with
,通过第二部分Arraysan
作为第一个参数,而参数withArraysan
作为第二部分。
如果我有您的问题,那么在Laravel中,他们可以使用魔术方法__call
来处理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.");
}
你可以在里面找到它
your_project_folder/vendor/laravel/framework/src/Illuminate/View/View.php
$arraysan = ['mike', 'robert', 'john']; // Variable to be passed
return view('home')->with('AnyVariable', $arraysan);
尝试这个! 这将起作用。
还要签入home.blade.php,
<?php
print_r($AnyVariable);die;
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.