• 06-10-2022, 17:26:46
    #1
    Merhaba
    Laravelde veritabanına kayıt ve resim ekleyebiliyorum güncelleme de yapabiliyorum sorunsuz çalışıyor. Ama ben güncelleme yaparken mevcut resimleri kullanıcı isterse silebilsin istiyorum. Bunu bir türlü yapamadım. Kullanıcı güncelleme ekranında istemediği resmi silip o şeklide kaydetmesini nasıl sağlayabilirim. Veriyi ve Resimleri ayrı tablolarda tutuyorum.

    Controllerda update kısmı
    public function update(Request $request, $arac_id)
    {
    $article=arac_detay::findOrFail($arac_id);
    $article->arac_id=$request->arac_id;
    
    if ($request->has('images')){
    foreach ($request->file('images') as $image){
    $imageName = $article['arac_id'].'-'.rand(1,50).'.'.$image->extension();
    $image->move(public_path('resimler'),$imageName);
    
    Image::create([
    'arac_id'=>$article->arac_id,
    'resim'=>$imageName,
    ]);
    }
    }
    $article->save();
    toastr()->success('Başarılı', 'Güncellendi');
    return redirect()->route('admin.makaleler.index');
    }
    Güncelleme ekranında böyle gösteriyorum.
    <div class="form-group">
        <label>Araç Resim</label>
        <input type="file" name="images[]" class="form-control" accept="image/*" multiple >
        <br>
        @foreach($images as $image)
            <img class="img-fluid" src="{{asset('resimler/'.$image->resim)}}" width="100px">
        @endforeach
    </div>
  • 06-10-2022, 17:32:54
    #2
    Aklıma bir kaç yöntem geldi hocam. Birincisi resimlerin olduğu tarafa bir buton bırakıp onclick ile içine resim id alıp ajax ile sildirebilirsiniz.
    İkincisi resimleri checkbox olarak sunabilir seçili olmayanları kayıt ettirmezsiniz
  • 06-10-2022, 17:34:07
    #3
    WebKedi adlı üyeden alıntı: mesajı görüntüle
    Aklıma bir kaç yöntem geldi hocam. Birincisi resimlerin olduğu tarafa bir buton bırakıp onclick ile içine resim id alıp ajax ile sildirebilirsiniz.
    İkincisi resimleri checkbox olarak sunabilir seçili olmayanları kayıt ettirmezsiniz
    Hocam laravelde yeniyim yazarak öğreniyorum. En kolay yoldan kafam karışmadan nasıl yapabilirim?
  • 06-10-2022, 17:42:34
    #4
    Hocam foreach içine resimleri yazmışsınız orayı şununle değiştiğini varsayalım.
    @foreach ($request->file('images') as $image){
    <div class="custom-control custom-checkbox image-checkbox">            
    <input type="checkbox" class="custom-control-input" id="resim{{ $resim->id }}" name="resimler[]" value="{{ $resim->id }}">       
         <label class="custom-control-label" for="resim{{ $resim->id }}">             
       <img src="{{asset('resimler/'.$image->resim)}}" alt="#" class="img-fluid">     
           </label>     
       </div>
    @endforeach
    Fonksiyonumuz ise şu şekilde :
    public function update(Request $request, $arac_id)
    {
    $article=arac_detay::findOrFail($arac_id);
    $article->arac_id=$request->arac_id;
     
    if($request->resimler){
      foreach($request->resimler as $resim){
    Image::delete($resim);
    }
    }
    
    if ($request->has('images')){
    foreach ($request->file('images') as $image){
    $imageName = $article['arac_id'].'-'.rand(1,50).'.'.$image->extension();
    $image->move(public_path('resimler'),$imageName);
     
    Image::create([
    'arac_id'=>$article->arac_id,
    'resim'=>$imageName,
    ]);
    }
    }
    $article->save();
    toastr()->success('Başarılı', 'Güncellendi');
    return redirect()->route('admin.makaleler.index');
    }
    Kusura bakmayın vaktim olmadığından aceleyle yazdım umarım yardımcı olabilmişimdir
  • 06-10-2022, 17:44:30
    #5
    https://iqbalfn.github.io/bootstrap-image-checkbox/
    Bunu kullanabilirsiniz resim checkbox için. Bunlar zor geldiyse print_r($request->post()) ile gelen dataları yazdırıp farklı yöntemleri deneyebilirsiniz
  • 13-10-2022, 21:53:53
    #6
    Hephaistos adlı üyeden alıntı: mesajı görüntüle
    Merhaba
    Laravelde veritabanına kayıt ve resim ekleyebiliyorum güncelleme de yapabiliyorum sorunsuz çalışıyor. Ama ben güncelleme yaparken mevcut resimleri kullanıcı isterse silebilsin istiyorum. Bunu bir türlü yapamadım. Kullanıcı güncelleme ekranında istemediği resmi silip o şeklide kaydetmesini nasıl sağlayabilirim. Veriyi ve Resimleri ayrı tablolarda tutuyorum.

    Controllerda update kısmı
    public function update(Request $request, $arac_id)
    {
    $article=arac_detay::findOrFail($arac_id);
    $article->arac_id=$request->arac_id;
    
    if ($request->has('images')){
    foreach ($request->file('images') as $image){
    $imageName = $article['arac_id'].'-'.rand(1,50).'.'.$image->extension();
    $image->move(public_path('resimler'),$imageName);
    
    Image::create([
    'arac_id'=>$article->arac_id,
    'resim'=>$imageName,
    ]);
    }
    }
    $article->save();
    toastr()->success('Başarılı', 'Güncellendi');
    return redirect()->route('admin.makaleler.index');
    }
    Güncelleme ekranında böyle gösteriyorum.
    <div class="form-group">
        <label>Araç Resim</label>
        <input type="file" name="images[]" class="form-control" accept="image/*" multiple >
        <br>
        @foreach($images as $image)
            <img class="img-fluid" src="{{asset('resimler/'.$image->resim)}}" width="100px">
        @endforeach
    </div>

    onu şöle yapıcaksın ilk önce veritabanındaki tablodan olan resim adresini çekiceksin ondan sonrada silip tekrardan resmi başka adres ile yüklüceksin örnek kodlar;
    $al= Yatlar::where('id',$id)->first();
    
    if($al){
    
    $silme= unlink(public_path('backend/klasor/'.$al->resim));
    
    if($silme){
    
    if ($request->hasFile('dosya')) {
        
    $file_name=uniqid().'.'.$request->dosya->getClientOriginalExtension();
    
    if($file_name){
    
    $yukle= $request->dosya->move(public_path('backend/klasor/'),$file_name);
    
    // ve klasore yuklendi bundan sonrasi sana ait artık veritabani tablona ekleyebilirsin..
    
    }
    
    }
    
    }
    
    }