繁体   English   中英

Laravel的“ withVariableName”如何工作?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM