• 04-07-2022, 16:27:28
    #10
    HaYLaZ adlı üyeden alıntı: mesajı görüntüle
    Öncelikle validator tarafında oluşan hataları ekrana bastırmanız için hataları geri döndürmeniz gerek. Yazdığınız kod eksik kalmış.


    $validator = Validator::make($request->all(), [
        "title" => "required",
        "aciklama" => "required",
    ]);
    
    if ($validator->fails()) {
        return redirect()
            ->back()
            ->withErrors($validator->errors());
    }
    Hayır anlamadınız hatayı görmek için blade dosyasında tanımlıyoruz onu yazmayı unutmuşum galiba
  • 04-07-2022, 16:40:58
    #11
    HaYLaZ adlı üyeden alıntı: mesajı görüntüle
    Öncelikle validator tarafında oluşan hataları ekrana bastırmanız için hataları geri döndürmeniz gerek. Yazdığınız kod eksik kalmış.


    $validator = Validator::make($request->all(), [
        "title" => "required",
        "aciklama" => "required",
    ]);
    
    if ($validator->fails()) {
        return redirect()
            ->back()
            ->withErrors($validator->errors());
    }
    Yok eksik yazmamışım kodları iyice inceleyin bende çalışıyor bir sorun yok blade dosyasında da tanımlamışım zaten
  • 04-07-2022, 16:44:48
    #12
    kodlar çalışır çalışmaz demedim.

    Validatordan geçmeyen koşulları nasıl ekranda göstereceksiniz?

    Sizin kodlarınızda validator hatalarının geri dönüşü yok.

    ->withErrors($validator->errors());
    aşağıdaki kodları da hatalar.blade.php isminde bir dosya içine kaydedersiniz;

    @if(Session::has('success'))
    <div class="col-lg-12 col-md-12">
        <div class="alert alert-success" role="alert">
            {{Session::get('success') }}
    
        </div>
    </div>
        @endif
    
    @if(Session::has('error'))
    
        <div class="col-lg-12 col-md-12">
            <div class="alert alert-danger" role="alert">
            <span class="fw-medium">Hata : </span> {{Session::get('error') }}
    
        </div>
        </div>
    @endif
    
    @if($errors->any())
    
        <div class="col-lg-12 col-md-12">
        @foreach($errors->all() as $error)
                <div class="alert alert-danger" role="alert">
                <span class="fw-medium">Hata : </span>{{$error}}
    
            </div>
            @endforeach
    
        </div>
    @endif
    bu dosyayı da ana template dosyasına include edersiniz;

    @include('hatalar')
    sonrasında hangi sayfada olursanız olun, controllerdan gelen hatalar ekrana basılır.


    kural oluşturmanın tek yöntemi bu değil elbette;

    yeni bir request oluşturursunuz;

    php artisan make:request BlogControlRequest
    validator kodlarını bu requeste rules ve messages şeklinde eklersiniz,

    Sonra controllerdan direk olarak bu request ile işlem yaptırırsınız. Böylece controllerdaki kod kalabalığı da azalmış olur

    public function store(BlogControlRequest $request)
    {
    diğer kodlar
    }
    NOT: amacım konunu baltalamak değil, faydalı olabileceğini düşündüğüm şeyleri de eklemek.
  • 04-07-2022, 21:55:47
    #13
    şöle anlatayım lang/tr veya lang/en klasörünün içinde zaten validation.php dosyamız var onu türkçeleştirdinizmi türkçe dönüyor fakat bende şuan güvenlik açığı olmadan bile mesela diyelimki A sayfasına post edicek A sayfasında eğer hata alırsak o hatayı B sayfasında gösteriyor hemde A sayfasının ismini vermiyor gizliyor burda amaç güvenlik açaısından A sayfasının ismini vermemek ve post işlemi başarılı olursa yine B sayfasında işlem yapmaktır... aslında bütün post işlemi A sayfasında yapılıyor ama biz B sayfasında gibi işlemleri gösteriyoruz buda güvenlik açığı oluşturmuyor umarım faydalı olmuşumdur
  • 27-07-2022, 14:14:01
    #14
    HaYLaZ adlı üyeden alıntı: mesajı görüntüle
    Öncelikle validator tarafında oluşan hataları ekrana bastırmanız için hataları geri döndürmeniz gerek. Yazdığınız kod eksik kalmış.


    $validator = Validator::make($request->all(), [
        "title" => "required",
        "aciklama" => "required",
    ]);
    
    if ($validator->fails()) {
        return redirect()
            ->back()
            ->withErrors($validator->errors());
    }
    Konu üzerinden zaman geçmiş ama eksik bilgiyi tamamlamak için yazıyorum.

    Validator::make... şeklinde bir kullanım yapılırsa sizin yazdığınız şekilde yazılmalı ki hatalar yakalansın ve response edilsin. Doğrudur.

    Ancak arkadaş $request->validate()... şeklinde bir kullanım yapmış. Bu kullanım şekli zaten olası hata durumunda sizin altta yazmış olduğunuz ekstra kodu gerçekleştirir. Yani iki kullanımda doğrudur.
    Akabinde viewde $errors->all() şeklinde hataları yakalabilirsiniz.

    Döküman:
    https://laravel.com/docs/9.x/validation#quick-writing-the-validation-logic
  • 27-07-2022, 22:01:00
    #15
    blap adlı üyeden alıntı: mesajı görüntüle
    Evet başarılıysa yazdır demişsiniz de zaten başaramayacak noktaya gelirse o üstteki doğrulama engelleyeceği için if e gerek yoktur. Attığınız doğrulama yöntemlerini örneğin php artisan make:request IsimRequest diye request oluşturup oradan çağırırsanız daha iyi olur demek demiştim. Mobilden pek olmuyor.
    Validasyonları request sınıfı oluşturup yapmak en mantıklısı hocam resources/lang kısmından dil ekleyip validasyon mesajlarını ordan gösteriyorum
    https://github.com/laravel-tr/Laravel8-lang