Laravel

Laravel Kayıt Formunu Ek Alanlar Ekleyerek Özelleştirme

Merhaba, Laravel 5 sürümü ile birlikte gelen bir kimlik doğrulama sistemimiz var. Bu sistemde kullanıcı girişi ve kaydı yapılabiliyor. Ancak şuan 6.x sürümünde bu sistem Laravel kurulumu ile birlikte direkt olarak gelmiyor. Bunu daha sonradan kurmamız gerekiyor. Eğer 6.x sürümünden önce bir sürüm kullanıyorsanız:

php artisan make:auth

yazarak bu sistemi direkt olarak kullanmaya başlayabilirsiniz. Eğer 6.x veya daha üstü bir sürüm kullanıyorsanız şu paketleri yüklemeniz gerekmekte:

composer require laravel/ui --dev

php artisan ui vue --auth

Yukarıdaki kodları sırasıyla terminalde çalıştırarak kimlik doğrulama sistemini projenize dahil edebilirsiniz.

Kayıt Formuna Ek Alanlar Nasıl Eklenir?

Sistemi projemize dahil ettikten sonra bize gelen varsayılan form şu şekilde geliyor:

Laravel varsayılan kayıt formu

Bu formu değiştirmek için resource/views/auth dizininde register.blade.php dosyamıza öncelikle bir kaç kod ekleyelim. Ben önce kullanıcı adımız için bir alan ekliyorum:

<div class="form-group row">
    <label for="username" class="col-md-4 col-form-label text-md-right">{{ __('Username') }}</label>
    <div class="col-md-6">
        <input id="username" type="text" class="form-control @error('username') is-invalid @enderror" name="username" value="{{ old('username') }}" required autocomplete="username" autofocus>
        @error('username')
        <span class="invalid-feedback" role="alert">
            <strong>{{ $message }}</strong>
        </span>
        @enderror
    </div>
</div>

Bu alandan sonra zaten bizim adımız için bir alan vardı. Adımızı ve soyadımızı ayrı saklamak istediğimden dolayı ben bir de soyadımız için ayrı bir alan ekliyorum:

<div class="form-group row">
    <label for="lastname" class="col-md-4 col-form-label text-md-right">{{ __('Lastname') }}</label>
    <div class="col-md-6">
        <input id="lastname" type="text" class="form-control @error('lastname') is-invalid @enderror" name="lastname" value="{{ old('lastname') }}" required autocomplete="lastname" autofocus>
        @error('lastname')
           <span class="invalid-feedback" role="alert">
                <strong>{{ $message }}</strong>
           </span>
        @enderror
    </div>
</div>

Bu alanları formumuza ekledikten sonra bizim formumuz şu şekilde olacak:

Laravel güncellenmiş kayıt formu

Bu alanları ekledikten sonra veritabanımızda ek alanlarımız için yer açmamız gerekiyor. Bunun için de migrations klasörü içinde varsayılan olarak gelen create_users_table.php dosyamızı düzenlememiz lazım.

Schema::create('users', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->string('username')->unique();
    $table->string('name')->nullable();
    $table->string('lastname')->nullable();
    $table->string('email')->unique();
    $table->timestamp('email_verified_at')->nullable();
    $table->string('password');
    $table->rememberToken();
    $table->timestamps();
});

Ben migration dosyamı bu şekilde düzenledikten sonra bunu çalıştırmam lazım. Eğer daha önce çalıştırdıysanız aşağıdaki kodu konsola yazarak yenileyebilirsiniz:

php artisan migrate:refresh

Ancak bu kodu yazarken dikkat edin. Eğer veritabanınızda veri varsa bunlar silinecektir. Daha önce migration dosyanızı çalıştırmadıysanız şu kodu konsola yazarak tabloları oluşturabilirsiniz:

php artisan migrate

Bu kodlardan birini yazdıktan sonra veritabanımızda tabloları oluşmuş şekilde göreceksiniz. Ancak şuan kayıt olmayı denerseniz hata alacaksınız. Çünkü değiştirmemiz gereken iki yer daha var.

İlk değiştirmemiz gereken yer app/Http/Controllers/Auth dizini içerisinde RegisterController.php dosyamız. Bu dosya içerisindeki validator fonksiyonumuzu şu şekilde düzenlememiz gerekiyor:

protected function validator(array $data)
{
    return Validator::make($data, [
        'username' => ['required', 'string', 'max:16', 'min:5', 'unique:users'],
        'name' => ['required', 'string', 'max:255'],
        'lastname' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:8', 'confirmed']
    ]);
}

Bunu düzenledikten sonra da bu sütunların kayıt izinlerini açmak için app dizini içerisindeki User.php dosyamızı, yani modelimizi düzenlememiz gerekiyor.

protected $fillable = [
    'name', 'email', 'password'
];

User modelimizde şu şekilde tanımlanmış bir özellik bulacaksınız. Bu özelliği de aşağıdaki şekilde güncellediğimiz gerekiyor.

protected $fillable = [
    'username', 'name', 'lastname', 'email', 'password'
];

Her şeyi ayarladıktan sonra son olarak üye kayıt olurken bu verileri de veritabanına göndermemiz gerekiyor. Bunun için de yine app/Http/Controllers/Auth dizini içerisinde RegisterController.php dosyamıza geri dönüyoruz ve create fonksiyonumuzu aşağıdaki gibi düzenliyoruz.

    protected function create(array $data)
    {
        return User::create([
            'username' => $data['username'],
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }

Burada kayıt formunda hangi sütunlara kayıt etmek istiyorsanız o sütunların isimlerini yazmanız lazım. Evet! Artık kayıt sayfanıza giderek kayıt olabilirsiniz.

[Toplam:2    Ortalama:5/5]
Etiketler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu

Pin It on Pinterest

Kapalı
Kapalı