Livewire.js 404 的问题的处理思路和解决方式

black flat screen computer monitor

在使用 Laravel Livewire 的时候一个常见问题是生成的 Livewire.js 文件会报错。

一般来说,解决思路有两种

  1. 看看你生成的 URL 是否是正确的。
  2. 看看你的 Nginx 配置是否是正确的。

生成的 URL 是否正常

在 Livewire 的配置当中,存在一个 asset_url 选项,这个选项会用于在页面中嵌入 Livewire.js 文件的功能,因此。如果你在使用过程中,修改了这个值,导致生成的地址是错误的,就有可能报错。

Nginx 配置是否正确

这个问题往往会导致报错的页面是 Nginx 的 404 页面。

在你的 Nginx 配置当中,如果你针对 JS 文件或 CSS 文件有单独处理,你需要将对应的处理注释掉,确保所有请求转发给 Laravel 进行处理。

 # location ~ .*\.(js|css)?$ {
 #   expires 7d;
 #   access_log off;
 # }
Code language: PHP (php)

Laravel 9 单元测试报错 An email must have a “From” or a “Sender” header

black flat screen computer monitor

在 Laravel 9 当中,引入了新的 Mailer 组件,随之而来的是一些过去没有的 Bug。

如果你在开发过程中出现了 An email must have a "From" or a "Sender" header 的报错,需要在 PHPUnit 当中配置 MAIL_FROM_ADDRESS 属性,用于通过测试。

<env name="MAIL_FROM_ADDRESS" value="from@example.com" />
Code language: HTML, XML (xml)

来源:https://laracasts.com/discuss/channels/laravel/for-reference-an-email-must-have-a-from-or-a-sender-header

Laravel 的 验证旧密码的验证代码

laravel

更新密码这是一个非常常用的功能,我们需要为用户提供一个更改密码的方式。安全一些的方式是通过验证旧密码,再更新密码,以免由于“记住我”功能导致的密码被盗改。
一般来说,Laravel 的更改密码都是通过 RestPassword Email 来实现的,但是我更倾向用户可以在后台更改。所以,便在这里贴下相关的代码,借助下方的代码,可以实现验证用户密码,旧密码验证通过后,再进行新的密码的更新。
 App\Providers\AppServiceProvider 中的 Boot 方法中添加如下代码。

Validator::extend('password_hash_check', function($attribute, $value, $parameters, $validator) {
            return Hash::check($value , $parameters[0]) ;
        });

在对应的表单请求中,添加如下的调用。

use Auth;
/**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        $password = Auth::user()->password;
        return [
            'old_password' => "required|password_hash_check:" . $password,
            "password" => "required|min:6|max:25|confirmed",
        ];
    }

(上述代码采用的是表单请求的方式来进行验证的,使用方法参看:Validation