[英]Passing an array from controller to view laravel using compact
我正在使用laravel 5.3(make:auth自動注冊和用戶身份驗證生成器),我想讓用戶在注冊表單中選擇他們的標簽。
我想傳遞$tags = App\\Tag::all();
到位於views\\auth\\register.blade.php
的register.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.