簡體   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