Php 将模型数据传递给视图
尝试将模型传递给视图,但我发现了错误 模型 错误消息 未定义变量:cats(视图: C:\xampp\htdocs\ecommece\resources\views\app\template.blade.php)Php 将模型数据传递给视图,php,laravel,Php,Laravel,尝试将模型传递给视图,但我发现了错误 模型 错误消息 未定义变量:cats(视图: C:\xampp\htdocs\ecommece\resources\views\app\template.blade.php) Laravel的工作方式是,当您将数据向下传递到视图时,它将仅对该视图和该视图中直接包含的其他刀片文件可用,因为它将在其范围内,而template.blade.php文件则不可用 据我所知,您的选项将是仅从索引视图中访问$cat变量,或者您可以转到位于以下目录中的BaseControl
Laravel的工作方式是,当您将数据向下传递到视图时,它将仅对该视图和该视图中直接包含的其他刀片文件可用,因为它将在其范围内,而
template.blade.php
文件则不可用
据我所知,您的选项将是仅从索引视图中访问$cat
变量,或者您可以转到位于以下目录中的BaseController:
app\Http\Controllers\Controller.php
在构造器中,可以有如下内容:
public function __construct()
{
$cats = Cat::all();
View::share(['cats' => $cats]);
}
警告一句,第二个选项确实意味着$cats
变量将在扩展基本控制器的任何控制器启动的每个页面加载上可用,因此实际上,这不是最有效的方法,因为这确实意味着每次加载一个页面时都会查询数据库,以获取Cat模型的所有记录,这可能不是每个请求都需要的
尽管如此,您也可以使用CatController
的构造函数,以同样的方式至少限制加载对该控制器的请求的Cat模型
在我的选择中,似乎值得考虑重新构造刀片模板,以便在index.blade.php
视图中更可行地使用$cats
变量
我希望这有帮助 当您执行
视图时,您会说视图的名称是index
('index'
但是你的文件名是template
并且在一个嵌套的目录中,它应该是app.template
,所以这里没有任何东西。你在哪里调用这个变量??index.blade.php
文件或template.blade.php
文件?索引从模板扩展而来,我正在调用模板``//index文件@扩展('app.template')```
<?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'));
}
{{dd($cats)}}
public function __construct()
{
$cats = Cat::all();
View::share(['cats' => $cats]);
}