为了账号安全,请及时绑定邮箱和手机立即绑定

LARAVEL 7 - 如何将变量传递给视图

LARAVEL 7 - 如何将变量传递给视图

PHP
缥缈止盈 2023-04-21 17:15:00
我有两个表,公司和项目。一个公司有很多项目,一个项目属于一个公司。公司.php模型protected $fillable = [    'id', 'name', 'description'];public function projects(){    return $this->hasMany('App/Project');}Project.php模型protected $fillable = [    'name', 'description', 'company_id', 'days'];public function company(){    return $this->belongsTo('App/Company');}在我的 index.blade.php 中,我只列出了公司,并让它们可以点击,这样当用户点击列出的公司时,他们就会被带到 show.blade.php,其中包含公司名称和所属项目到那家公司是这样显示的。<div class="jumbotron">     <h1>{{ $company->name }}</h1>       <p class="lead">{{ $company->description }}</p>    </div><div class="row">    @foreach($company->projects as $project)    <div class="col-lg-4">        <h2>{{ $project->name }}</h2>        <p class="text-danger">{{ $project->description }}</p>        <p><a class="btn btn-primary" href="/projects/{{ $project->id }}" role="button">View Projects »</a></p>    </div>    @endforeach</div>现在我得到一个未定义的变量$project错误。所以我决定像这样在 CompaniesController.php 的 show() 函数中声明变量public function show(Company $company){    $company = Company::find($company->id);    $projects = Company::find(1)->projects;    return view('companies.show', ['company' => $company, 'projects' => $projects]);}并像这样访问 show.blade.php 中的变量    <div class="jumbotron">    <h1>{{ $company->name }}</h1>    <p class="lead">{{ $company->description }}</p></div><div class="row">    @foreach($projects as $project)    <div class="col-lg-4">        <h2>{{ $project->name }}</h2>        <p class="text-danger">{{ $project->description }}</p>        <p><a class="btn btn-primary" href="/projects/{{ $project->id }}" role="button">View Projects »</a></p>    </div>    @endforeach</div>现在,当我访问 show.blade.php 时出现“未找到类‘应用程序/项目’”错误。我在将公司项目传递给视图时遇到了挑战。任何帮助将不胜感激。这是我的路线;    Route::get('/', function () {    return view('welcome');});Auth::routes();Route::get('/home', 'HomeController@index')->name('home');Route::resource('companies', 'CompaniesController');Route::resource('projects', 'ProjectsController');
查看完整描述

3 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

如果我是对的,我会很搞笑的……

在定义关系的模型中,将 App/Project 替换为 App\Project。对 Company... 执行相同操作。将“/”替换为“\”。


查看完整回答
反对 回复 2023-04-21
?
达令说

TA贡献1821条经验 获得超6个赞

您已经在使用模型绑定。在您的显示方法中,您不需要查找。只返回你需要的


public function show(Company $company)

{

    return view('companies.show', ['company' => $company];

}

在您看来,您可以执行以下操作:


@foreach($company->projects as $project)

...

@endforeach


查看完整回答
反对 回复 2023-04-21
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

您必须Project正确命名空间类

  1. 确保文件名是Project.php

  2. 确保内部Project.php命名空间声明是正确的:namespace App;

  3. 确保里面的类名Project.php是“项目”:class Project extends Model { ...

  4. 确保您已将其导入控制器。use App\Project

完成所有这些之后你不会得到错误:

Class 'App/Project' not found

查看完整回答
反对 回复 2023-04-21
  • 3 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信