اذهب إلى المحتوى

السؤال

نشر

لقد بدأت في إنشاء تطبيق ويب باستخدام Laravel 8. لقد لاحظت أن الكثير من الأشياء قد تغيرت في Laravel 8 بما في ذلك المصادقة. الآن ، أحاول استخدام Jetstream للمصادقة بدل حزمة Laravel/UI أريد إضافة حقل جديد company لصفحة تسجيل مُستخدم جديد و لا أعرف كيف يُمكن إضافة حقول جديدة و عند إنشاء المُستخدم يتم تمريرها و تخزينها في قاعدة البيانات.

Recommended Posts

  • 1
نشر

لإضافة حقول جديدة تحتاج إتباع الخطوات التالية:

  • إضافة الحقول لملف التهجير الخاص بالمُستخدمين:
<?php

public function up()
{
  Schema::create('users', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('company'); // الحقل المضاف
    $table->string('email')->unique();
    $table->timestamp('email_verified_at')->nullable();
    $table->string('password');
    $table->rememberToken();
    $table->foreignId('current_team_id')->nullable();
    $table->text('profile_photo_path')->nullable();
    $table->timestamps();
  });
}
  • تنفيذ أمر التهجير:
php artisan migrate:fresh
  • إضافة الحقول الجديدة لمصفوفة fillable في النموذج User:
<?php

protected $fillable = [
  'name', 'email', 'password', 'company'
];
  • بعد ذلك تضيف الحقول لصفحة العرض register.blade.php الموجود في المسار resources\views\auth\register.blade.php
<div class="mt-4">
  <x-jet-label for="company" value="{{ __('Company') }}" />
  <x-jet-input id="company" class="block mt-1 w-full" type="text" name="company" :value="old('company')" required />
</div>
  • ثم تذهب إلى الصنف CreateNewUser الموجود في المسار: app\Actions\Fortify\CreateNewUser.php و تقوم بالتحقق من الحقول المُضافة و إضافتها للتابع create:
<?php

public function create(array $input)
{
  Validator::make($input, [
    'name' => ['required', 'string', 'max:255'],
    'company' => ['required', 'string', 'max:255'],
    'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
    'password' => $this->passwordRules(),
    'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['required', 'accepted'] : '',
  ])->validate();

  return DB::transaction(function () use ($input) {
    return tap(User::create([
      'name' => $input['name'],
      'company' => $input['company'],
      'email' => $input['email'],
      'password' => Hash::make($input['password']),
    ]), function (User $user) {
      $this->createTeam($user);
    });
  });
}

و الآن قد جهزت كل شيء و تحتاج فقط للتجربة.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...