繁体   English   中英

将变量从索引视图传递到 Laravel 8 和刀片中的显示视图

[英]Pass Variable from Index View to Show View in Laravel 8 & Blade

不知道我错过了什么,但我似乎无法从我的index.blade.php视图到我的show.blade.php视图中获取变量。

我不断收到错误Undefined variable: usercar...

Livewire/首页/index.php

<?php

namespace App\Http\Livewire\Home;

use App\Models\User;
use App\Models\Car;
use App\Models\Usercar;
use Livewire\Component;
use Livewire\WithPagination;
use Illuminate\Database\Eloquent\Builder;

class Index extends Component
{
    use WithPagination;
    public $perPage = 25;
    public $sortAsc = true;
    public $search;

    protected $queryString = ['search'];

    public function render()
    {
        $usercars = Usercar::with('user')
            ->where('year', 'like', '%'.$this->search.'%')
            ->orwhereHas('user', function (Builder $query) {
                $query->where('first_name', 'like', '%'.$this->search.'%');
                $query->orWhere('last_name', 'like', '%'.$this->search.'%');
                $query->orWhere('drivers_number', 'like', '%'.$this->search.'%');
                $query->orwhereHas('region', function (Builder $query) {
                    $query->where('region_name', 'like', '%'.$this->search.'%');
                });
            })
            ->orwhereHas('car', function (Builder $query) {
                $query->where('model', 'like', '%'.$this->search.'%');
            })
            ->paginate($this->perPage);
        return view('livewire.home.index', compact('usercars'))
            ->layout('layouts.frontend');
    }
}

Livewire/首页/show.php

<?php

namespace App\Http\Livewire\Home;

use Livewire\Component;

class Show extends Component
{
    public function render()
    {
        return view('livewire.home.show')
            ->layout('layouts.frontend');
    }
}

livewire/home/index.blade.php

...
@foreach($usercars as $usercar)
...
<a href="{{route('home.show', $usercar->id)}}">View Car</a>
...
@endforeach
...

livewire/home/show.blade.php

...
<div>
    {{$usercar->car_color}}
</div>
...

web.php

...
Route::get('/', App\Http\Livewire\Home\Index::class)->name('home.index');
Route::get('/{usercar}', App\Http\Livewire\Home\Show::class)->name('home.show');
...

当然,您必须将 url 段传递给 controller 和视图:

<?php

namespace App\Http\Livewire\Home;

use Livewire\Component;

class Show extends Component
{
    public function render($usercar)
    {
        return view('livewire.home.show', [ 'usercar' => $usercar ])
            ->layout('layouts.frontend');
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM