Laravel:你如何将数据传递给刀片.php?

Laravel: How do you pass data to a blade.php?

提问人:TraktorJack 提问时间:10/6/2022 最后编辑:Abdulla NilamTraktorJack 更新时间:10/6/2022 访问量:691

问:

我很难理解如何将数据传递给 .我想将用户的用户名传递给仪表板组件。以下是我尝试过的几件事:.blade($user)

return view('livewire.dashboard', ['user'=>'$user']);
return view('livewire.dashboard', compact('$user'));
return view('livewire.dashboard'->with('user',$user));

但后来我意识到,我试图从中传递用户信息的类不知道用户变量是什么。下面是类(Dashboard.php):

<?php

namespace App\Http\Livewire;

use Illuminate\Contracts\View\View;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\Container\BindingResolutionException;
use Livewire\Component;

class Dashboard extends Component
{
    /**
     * @return View|Factory
     * @throws BindingResolutionException
     */
    public function render()
    {
        return view('livewire.dashboard');
    }
}

这是我的web.php文件:

use App\Http\Livewire\Dashboard;
use App\Http\Livewire\User;

    // Dashboard
    Route::get('/', Dashboard::class)->name('dashboard');
    // I have also tried something like 'Route get user' here, also didn't work

     // User routes
    Route::prefix('/users')->group(function () {
        Route::get('/', User\Index::class)->name('users.index');
        Route::get('/create', User\Create::class)->name('users.create');
        Route::get('/{user}', User\Edit::class)->name('users.edit');
    });

我很难理解组件/类/刀片板如何相互通信。如何将当前登录人员的用户名传递到我的仪表板.blade.php 文件?它看起来像这样:

    @isset($user)
    Hallo {{ $user->name }},
    @endisset
</div>
<div>Willkommen im Formular-Editor!</div>
<div>Neue Formulare kannst du über den Tab "Editor" oben in der Leiste anlegen. Hier kannst Du auch bestehende Formulare bearbeiten.</div>  

解释和解决方案将不胜感激,因为我真的不明白 Laravel 是如何工作的。谢谢

php laravel 路由 laravel-livewire

评论


答:

1赞 Abdulla Nilam 10/6/2022 #1

你可以通过它们

<livewire:show-post :user="$user">

在Laravel方式

public function render()
{
    return view('livewire.dashboard', ['user' => auth()->user()]);
}
  

阅读更多 官方LiveWire文档


除了所有

Laravel是一个精心设计的框架。因此,在这里和那里传递登录用户(在控制器中获取并传递给查看),您可以使用 auth() 助手直接访问。$user

在视野中

auth()->id();
auth()->user();

评论

0赞 TraktorJack 10/6/2022
谢谢!是这样解决的: public function render() { return view('livewire.dashboard', ['user'=>auth()->user()]);
0赞 Abdulla Nilam 10/6/2022
不要通过火线传递它。删除它,并且仍然可以使用以下命令在刀片文件中访问auth()->user()
2赞 Peppermintology 10/6/2022 #2

当您使用 Livewire 时,您可能希望利用数据绑定(Livewire 的好处之一)。

您可以做的是在组件上定义一个属性,然后您可以在视图中访问该属性。$userDashboarddashboard.blade.php

您的组件可能如下所示(为简洁起见,我省略了代码)Dashboard

class Dashboard extends Component
{
    public $user;

    /*
     * The mount() function is Livewires equivalent of __construct()
     */
    public function mount()
    {
        $this->user = Auth::user();
    }

    public function render()
    {
        return view('livewire.dashboard');
    }
}

那么在您的视图中,您只需访问$user

Hallo {{ $user->name }}

评论

0赞 Peppermintology 10/6/2022
@AbdullaNilam 嗯,是的,我确实在我的回答中提到了这一点,并且 - 根据原始问题 - 一个.DashboardLivewire Component
0赞 user19949844 10/6/2022 #3

以更简单的方式,您可以像在第二步中使用一样使用紧凑型。从用户变量中删除 $ 所需的唯一更改。

例如。

return view('livewire.dashboard', compact('user'));