前言

一不小心已经写了5篇关于 livewire 的东西了。今天这个也到了最后一篇了,我们把登录注册退出都完善好就可以结束这个系列了。后续我在研究点东西后,就准备开新坑了。

一鼓作气

文章列表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<div>
    {{-- In work, do what you enjoy. --}}
    <div>
        <livewire:auth.logout />
    </div>
    <div class="p-5">
        @foreach($posts as $post)
            @livewire('post.show', ['post' => $post])
        @endforeach
        {{ $posts->links() }}
    </div>
</div>

注意这行 @livewire('post.show', ['post' => $post]) 之前我们用的是 @include。虽然样式没问题,但是如果使用 Action 就有问题了,会提示找不到方法,所以用 livewire 提供的方法。

登录部分

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php

namespace App\Http\Livewire\Auth;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Livewire\Component;

class Login extends Component
{
    public $email;
    public $password;
    public bool $rememberMe = true;

    protected $rules = [
        'email' => 'required|email',
        'password' => 'required',
    ];

    public function updated($propertyName)
    {
        $this->validateOnly($propertyName);
    }

    public function login(Request $request)
    {
//        dd($this->validate());
        if (Auth::attempt($this->validate(), $this->rememberMe)) {
            $request->session()->regenerate();

            return redirect()->intended('/post/show');
        }

        $this->addError('email', 'The provided credentials do not match our records.');
    }

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

注意看,这里需要验证的和不要验证的是分开的。也就是 rememberMe 那个属性。

总结

最后3篇,为什么写这么短呢?因为本身并不复杂,而且更多的是 laravel 的东西了,所以我不太好说,大家多看文档吧。这三篇更多像是胶水。把想要的东西合并在一起。最后这个东西真的不复杂,自己看看代码吧。

demo 项目地址:livewire-demo