簡體   English   中英

使用Compact從控制器傳遞數組以查看laravel

[英]Passing an array from controller to view laravel using compact

我正在使用laravel 5.3(make:auth自動注冊和用戶身份驗證生成器),我想讓用戶在注冊表單中選擇他們的標簽。

我想傳遞$tags = App\\Tag::all(); 到位於views\\auth\\register.blade.phpregister.blade.php文件。

我發現這種方法:

public function showRegistrationForm()
{
    return view('auth.register');
}

我想做:

public function showRegistrationForm()
{
    $tags = App\Tag::all();
    return view('auth.register', compact($tags));
}

但是在嘗試訪問register.blade.php文件時出現未定義的變量'tags'

不要輸入變量本身,在使用compact時提供變量名稱。

return view('auth.register', compact('tags'));

首先,您需要了解以下內容:

模型視圖控制器 ;

控制器是中心點,即從模型獲取數據並將數據傳遞到視圖或純視圖。這意味着什么:

public function showRegistrationForm()
    {
        return view('auth.register');
    }

這將返回一個普通視圖。下面將返回一個包含模型數據的視圖,在您的情況下App\\Tag:App\\Tag::all()是一個集合,即一個帶有數據集的容器;

public function showRegistrationForm()
    {
        $tags = App\Tag::all();
        return view('auth.register', compact($tags));
    }

還是更好,而不是壓縮數組,而只是創建一個新數組並傳遞數據集,怎么辦?

return view('auth.register', ['tags' => $tags]);

這是調試應用程序的方法:使用以下方法:

public function showRegistrationForm()
    {
        $tags = App\Tag::all();
        dd($tags);
        //return view('auth.register', compact($tags));
    }

您看到數組或錯誤了嗎? 如果為數組,則將數據集傳遞給視圖,如果不存在,則表明模型不存在或存在某種錯誤,只需檢查您的日志文件即可。

祝好運。

如果您想使用緊湊型,那么使用這樣的

 return view('auth.register', compact('tags'));

在laravel 5.3中,它們具有如下所示的更改,但即使您可以同時使用兩種方法:)

return view('auth.register', ['tags' => $tags]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM