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

欢迎。我已经学习了几天 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)

请帮忙。我已经坐在这里好几个小时了,我不知道如何处理它:(


拉莫斯之舞
浏览 158回答 3
3回答

慕妹3242003

在App\Http\Controllers\Auth\RegisterController.php更新您的create()功能并将所有额外字段放在那里。顺便说一句,您不需要,date_of_registration因为该created_at领域已经由 Laravel 管理。此外,generateSeoUrl您可以使用Laravel 中的Str::slug函数代替您的函数。

三国纷争

我将假设您使用的是“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']),    ]);}
打开App,查看更多内容
随时随地看视频慕课网APP