尝试通过模型进行查看,但出现错误
模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Cat extends Model
{
//
protected $table ='Cat';
protected $primaryKey = 'id';
}
控制器
<?php
namespace App\Http\Controllers;
use App\Cat;
use Illuminate\Http\Request;
class CatController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$cats = Cat::all();
return view('index', compact('cats'));
}
然后我尝试在veiw中对其进行检查
{{dd($cats)}}
错误消息
未定义变量:cats(查看: C:\ xampp \ htdocs \ ecommece \ resources \ views \ app \ template.blade.php)
答案 0 :(得分:0)
Laravel的工作方式是,当您将数据向下传递到视图时,该视图将仅可用于该视图以及直接包含在该视图中的其他刀片文件,因为它将在其范围内,而template.blade.php
文件不是。
据我所知,您的选择将是只从索引视图中访问$cat
变量,或者您可以转到将位于此目录中的BaseController:
app \ Http \ Controllers \ Controller.php
在您的构造函数中,您可能会遇到这样的事情:
public function __construct()
{
$cats = Cat::all();
View::share(['cats' => $cats]);
}
警告一句,第二个选项确实意味着$cats
变量将在扩展基本Controller的任何控制器启动的每次页面加载中可用,因此,这并不是最有效的方法。确实意味着每次为Cat模型的所有记录加载页面时都会查询数据库,而实际上并非每次请求都需要该数据库。
尽管,您也可以以相同的方式使用CatController
的构造函数,以至少限制为向该控制器发出的请求而加载的Cat模型。
以我的选择,似乎值得考虑对刀片模板进行重组,以使$cats
视图中的index.blade.php
变量的使用更加可行。
我希望这会有所帮助!