• 29-06-2022, 15:03:07
    #1
    selam arkadaşlar bilmeyen arkadaşlar için Laravelde diyelimki bir formumuz var o formu post edicez ama sayfa değişmiyecek ve o post adresinide tarayıcıya yapıştırdığımızda normalde hata verir ama biz bu hatayı almamayı bugün göreceğiz isterseniz kodlarımıza geçelim hemen:
    controllerımız:
    public function listegonderme(){
    
    return view('course.listegonderme');
    
    
    
    }
    public function listepost(Request $request){
    
    $request-> validate([
    
    'ad' => 'required',
    'aciklama' => 'required',
    'must' => 'required'
    
    
    
    ]);
    
    
    
    $ekle= DB::table('isimes')->insert([
    
    'isims' => $request->ad,
    'aciklamas' => $request->aciklama,
    'musts' => $request->must
    
    ]);
    
    
    if ($ekle) {
    
    return back()->with('status','kayıt başarılı');
    
    
    
    }
    
    
    
    }
    ondan sonra route'da sayfamızın linkini aşağıdaki yazdığım gibi hem post hemde get olarak belirtiyoruz:
    Route::post('listepost','deneme@listepost')->name('listepost');
    Route::get('listepost','deneme@listepost');
    yukardaki yazdığım route sayfaları bu şekilde yazılmalı ve postta ->name() unutulmamalıdır..eğer sadece post yazıp aynı sayfanın getini yazmaz isek sayfa hata vericektir yani tarayıcıya listepost yazdığımızda hata vericektir. şimdi
    gelelim blade dosyamıza:
    blade dosyamız:
    Alıntı
    @extends('layouts.newpage')
    @section('title','listesek')
    @section('content')
    
    
    @if(session()->has('status'))
    
    
    <div class="alert alert-success" role="alert">
      {{session('status')}}
    </div>
    
    
    @endif
    <form action="{{route('listepost')}}" method="post" enctype="multipart/form-data">
    
    
    <input type="text" name="ad" placeholder="isim">@br
    @br
    
    <input type="text" name="aciklama" placeholder="açıklama">@br
    @br
    <input type="text" name="must" placeholder="must">@br
    @br
    
    
    
    
    <button type="submit" class="btn btn-warning">Ekle</button>
    @csrf
    
    </form>
    
    
    
    @if($errors->any())
    
    <div class="alert alert-danger" role="alert">
    
    
    
    
    @foreach($errors->all() as $error)
    
    
    
    {{$error}} 
    @br
    
    
    @endforeach
    </div>
    @endif
    
    
    @endsection
    ve bukadar arkadaşlar deneyin mutlaka çalışcaktır zaten listepost sayfamızdaki güvenliğide validation lar ile aldık eğer bir sorunuz olursa buraya yazın yardımcı olurum teşekkürler sevgilerle kalın...
  • 29-06-2022, 15:13:03
    #2
    Hocam yeni direk $request->validated diye de ekleyebilirsiniz. Ayrıca request validate etme işlemini özel request oluşturarak yaparsanız daha güzel görünürdü. Son olarakta zaten istekleri doğruladığınız için if e gerek yok. İyi günler.
  • 29-06-2022, 15:19:08
    #3
    blap adlı üyeden alıntı: mesajı görüntüle
    Hocam yeni direk $request->validated diye de ekleyebilirsiniz. Ayrıca request validate etme işlemini özel request oluşturarak yaparsanız daha güzel görünürdü. Son olarakta zaten istekleri doğruladığınız için if e gerek yok. İyi günler.
    mesela şöle bir yöntemde var
    $validator= Validator::make($request->all(),[
    'ad' => 'required',
    'aciklama' => 'required',
    'must' => 'required'
    
    
    ])->validate();
    yani şu şekildede yazılır ordaki if kullanımına gelecek olur isek orda if olması gerekiyor çünkü biz demişizki kayıt edilmiş ise kayıt başarılı diye sayfaya yazdır demişiz yani bunuda status ile şu şekilde
     return back()->with('status','kayıt başarılı');
    yazdırıyoruz..
    ve statusuda bladede kullanıyoruz eğer if kullanmaz isek orda bladede yazdıramayız çünkü bir şart kurmamız gerekir bilmeyen arkadaşlar için faydalı olacağını düşündüğüm için yazdım umarım faydalı olmuşumdur..
  • 29-06-2022, 15:25:48
    #4
    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.
  • 29-06-2022, 15:41:44
    #5
    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.
    şu yolda: resource/lang/tr/validation.php zaten validation'ın kendi dökümantasyonu var ingilizce olarak ama biz onu türkçeleştiriyoruz ve ondan sonra hazır olarak önümüze geliyor ve biz bunu sadece controllerda çağırıyoruz okadar
    hayır if konusunda anlamadınız kayıt başarı ise eğer başarılı değer dönüyor eğer ben oraya if koymazisem sayfada devamlı kayıt başarılı diye yazar eğer anlatabiliyorsam ne mutlu bana
  • 29-06-2022, 15:48:22
    #6
    yazilimdukkanim adlı üyeden alıntı: mesajı görüntüle
    şu yolda: resource/lang/tr/validation.php zaten validation'ın kendi dökümantasyonu var ingilizce olarak ama biz onu türkçeleştiriyoruz ve ondan sonra hazır olarak önümüze geliyor ve biz bunu sadece controllerda çağırıyoruz okadar
    hayır if konusunda anlamadınız kayıt başarı ise eğer başarılı değer dönüyor eğer ben oraya if koymazisem sayfada devamlı kayıt başarılı diye yazar eğer anlatabiliyorsam ne mutlu bana
    Siz anlatabiliyorsunuz da ben anlatamıyorum. Siz olayı çok başka anlamışsınız hocam neyse konu bölünmesin iyi günler.
  • 29-06-2022, 16:02:14
    #7
    DB::table('isimes') /// yerine ModelName::create(arr) yapısını kullanın
    İki kere Route:: tanımlamak yerine, Route::match(['GET', 'POST']) yapısını kullanın. Aynı şeydir.
    Gelen requestlerdeki input name'leri database sütunlarıyla aynı isimdeyse, $request->only('ad', 'aciklama', 'must') yapısını kullanın
    Validationları Solid principles gereği ayrı request classlarında tutun. (php artisan make:request)

    if konusuna gelecek olursak, zaten db'ye veriyi yazamazsa bir exception fırlatacaktır ve kod bitecektir. O yüzden o da kaldırılabilir

    Paylaşım için teşekkürler
  • 29-06-2022, 16:16:29
    #8
    FKT adlı üyeden alıntı: mesajı görüntüle
    DB::table('isimes') /// yerine ModelName::create(arr) yapısını kullanın
    İki kere Route:: tanımlamak yerine, Route::match(['GET', 'POST']) yapısını kullanın. Aynı şeydir.
    Gelen requestlerdeki input name'leri database sütunlarıyla aynı isimdeyse, $request->only('ad', 'aciklama', 'must') yapısını kullanın
    Validationları Solid principles gereği ayrı request classlarında tutun. (php artisan make:request)

    if konusuna gelecek olursak, zaten db'ye veriyi yazamazsa bir exception fırlatacaktır ve kod bitecektir. O yüzden o da kaldırılabilir

    Paylaşım için teşekkürler
    Paylaşımınız için teşekkürler bildiğim bir yol ama onu kullanmıyorum ben bu yolu kullanıyorum ve öle öğretiyorum paylaşımın için teşekkurler
  • 04-07-2022, 16:07:01
    #9
    Ö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());
    }