在 Laravel Livewire 中将数据长期保存到会话中?

发布于 2025-01-10 14:15:50 字数 231 浏览 0 评论 0原文

我有一个社交网络,希望在会话中存储用户兴趣喜欢/不喜欢,因为有很多子页面我需要这些数据,并且我想避免在每个页面上查询数据库。但是,您似乎只能在 Livewire 中的会话中保存闪存数据。

通常的 Laravel $request->session()->put(...) 功能在会话中长期保存数据似乎在 Livewire 中不起作用?那么我如何才能在会话中长期保存数据,或者还有其他选项或功能吗?

I have a social network and want to store user interests likes/dislikes in a session since there are many subpages where I need this data and I want to avoid querying the database for that on every page. However, it seems you can only save flash data in sessions in Livewire.

The usual Laravel $request->session()->put(...) feature to save data long term in sessions doesn't seem to work in Livewire? So how could I save data long term in sessions or is there an other option or feature?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

节枝 2025-01-17 14:15:50

所以,我自己找到了答案。

实际上,您可以只使用 session()->put('key', 'value')

我想知道为什么这没有正式记录。也许这对你们中的某些人也有帮助。

So, I just found out the answer by myself.

You can actually just use session()->put('key', 'value').

I wonder why this isn't officially documented tho. Maybe this helps someone of you too.

一紙繁鸢 2025-01-17 14:15:50

在 Livewire 组件中:

    <?php
    
    namespace App\Http\Livewire;
    
    use Livewire\Component;
    use App\Models\Producto; 
    use Livewire\WithPagination;
    
     class Filtro extends Component
    
    {
    
         public $marca;
    public function render()
    {


    if(isset($this->marca)){ session()->put('marca', $this->marca);}


            $productos = Producto::where('deleted',0)
                                ->where('marca','like', '%'.session('marca').'%')
                                
                                ->orderBy('id')
                                ->paginate(20) ;


        return view('livewire.filtro', [
            'productos' => $productos
        ]);
    }
}

在视图刀片中:

<div class="filter__location">
    <input type="text"  class="form-control" placeholder="Marca" wire:model.debounce.1000ms="marca" 
    @if (session('marca'))

    value="{{ session('marca') }}"

     @endif

    />
        
    </div>

In livewire component:

    <?php
    
    namespace App\Http\Livewire;
    
    use Livewire\Component;
    use App\Models\Producto; 
    use Livewire\WithPagination;
    
     class Filtro extends Component
    
    {
    
         public $marca;
    public function render()
    {


    if(isset($this->marca)){ session()->put('marca', $this->marca);}


            $productos = Producto::where('deleted',0)
                                ->where('marca','like', '%'.session('marca').'%')
                                
                                ->orderBy('id')
                                ->paginate(20) ;


        return view('livewire.filtro', [
            'productos' => $productos
        ]);
    }
}

In view blade:

<div class="filter__location">
    <input type="text"  class="form-control" placeholder="Marca" wire:model.debounce.1000ms="marca" 
    @if (session('marca'))

    value="{{ session('marca') }}"

     @endif

    />
        
    </div>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文