为了账号安全,请及时绑定邮箱和手机立即绑定

在 Laravel 中注册期间自动归档字段

在 Laravel 中注册期间自动归档字段

PHP
拉莫斯之舞 2021-06-17 15:00:13
欢迎。我已经学习了几天 Laravela 并在注册时停了下来。我有迁移:Schema::create('users', function (Blueprint $table) {        $table->bigIncrements('id');        $table->string('name', 120);        $table->string('surname', 120);        $table->string('email', 120)->unique();        $table->timestamp('email_verified_at')->nullable();        $table->string('password');        $table->bigInteger('counter')->default(0);        $table->string('url_address', 160);        $table->string('ip', 25);        $table->dateTime('date_of_registration');        $table->bigInteger('company_id')->unsigned();        $table->boolean('isCompany')->default(0);        $table->boolean('isMailing')->default(0);        $table->text('note');        $table->string('nip1', 12);        $table->string('business1', 120);        $table->string('phone1', 60);        $table->string('street1', 150);        $table->string('number1', 8);        $table->string('postal_code1', 12);        $table->string('city1', 100);        $table->bigInteger('country_id1')->default(0);        $table->bigInteger('provincial_id1')->default(0);        $table->string('nip2', 12);        $table->string('business2', 120);        $table->string('phone2', 60);        $table->string('street2', 150);        $table->string('number2', 8);        $table->string('postal_code2', 12);        $table->string('city2', 100);        $table->bigInteger('country_id2')->default(0);        $table->bigInteger('provincial_id2')->default(0);        $table->string('nip3', 12);        $table->string('business3', 120);和功能:function generateSeoUrl(string $string): string{    $string = preg_replace("/ +/", "-", trim($string));    $string = mb_strtolower(preg_replace('/[^A-Za-z0-9-]+/', '', $string), 'UTF-8');    return $string;}上表使用的是 Laravel 的默认授权(我使用的是 Laravel 5.8)。如何在注册时添加:- ip - IP address of the user who registered- date_of_registration - current date- url_address - here I would like to save the generatedSeoUrl result ($ email)请帮忙。我已经坐在这里好几个小时了,我不知道如何处理它:(
查看完整描述

3 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

App\Http\Controllers\Auth\RegisterController.php更新您的create()功能并将所有额外字段放在那里。

顺便说一句,您不需要,date_of_registration因为该created_at领域已经由 Laravel 管理。

此外,generateSeoUrl您可以使用Laravel 中的Str::slug函数代替您的函数。


查看完整回答
反对 回复 2021-06-19
?
三国纷争

TA贡献1804条经验 获得超7个赞

我将假设您使用的是“App\Http\Controllers\Auth\RegisterController”中的默认 Laravel 注册控制器


所以在你的 RegisterController 中,有一个受保护的 create 方法,它接受一个数据数组(来自提交的表单的数据)


为了获取 ip 地址,laravel 在它的请求对象上提供了一个方法,所以你有 $ip = Request::ip()


至于日期,你可以使用默认自带的 carbon $date = \Carbon\Carbon::now()


至于获取 seoUrl,您可以将该函数设为 RegisterController 类中的私有函数,并通过您想要的字符串(可能是全名)调用它。


所以实际上,您的 create 方法将如下所示


protected function create(array $data)

{

    return User::create([

    'name' => $data['name'],

    'email' => $data['email'], 

    'seoUrl' => $this->generateSeoUrl($data['name']),

    'ip' => Request::ip(),

    'data_of_registration' => \Carbon\Carbon::now(),

    ... /*Other form fields continue*/

    'password' => Hash::make($data['password']),


    ]);

}


查看完整回答
反对 回复 2021-06-19
  • 3 回答
  • 0 关注
  • 157 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信