![](/img/trans.png)
[英]How to concatenate two variables in a controller class and pass it to all views of the class in laravel
[英]LARAVEL 7 - How to pass variables to views
我有兩張表,Company 和 Projects。 一個公司有很多項目,一個項目屬於一個公司。
公司.php model
protected $fillable = [
'id', 'name', 'description'
];
public function projects()
{
return $this->hasMany('App/Project');
}
項目.php model
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() function 中聲明變量,就像這樣
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 時,出現Class 'App/Project' not found錯誤。 我在將公司項目傳遞給視圖時遇到了挑戰。 任何幫助將不勝感激。 這是我的路線;
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::resource('companies', 'CompaniesController');
Route::resource('projects', 'ProjectsController');
您必須正確命名Project
class
Project.php
Project.php
命名空間聲明中是正確的: namespace App;
Project.php
中的 class 名稱為“項目”: class Project extends Model {...
use App\Project
完成所有操作后,您將不會收到錯誤:
Class 'App/Project' not found
您已正確完成在視圖中傳遞變量,但請在此處查看傳遞它的其他示例和方法: https://laravel.com/docs/7.x/views
希望這可以幫助你
您已經在使用 model 綁定。 在你的show方法中,你不需要find。 只返回你需要的
public function show(Company $company)
{
return view('companies.show', ['company' => $company];
}
在您看來,您可以執行以下操作:
@foreach($company->projects as $project)
...
@endforeach
如果我是對的,我會很搞笑......
在定義關系的模型中,將 App/Project 替換為 App\Project。 對公司做同樣的事情......將“/”替換為“\”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.