Giriş yapmadınız.

#1 19.05.2016 09:29:19

kzorluoglu
Üye
Kayıtlı: 27.12.2015
Mesajlar: 194

Laravel Güncelleme ve Ekleme islemleri icin tek bir form kullanimi

Selamun Aleyküm,
isyerinde calisan bir yazilimcidan gördügüm ve cok hosuma giden bir mantik veya yoldan bahsedecegim, fazla söze gerek yok, mantik tek bir form yapisini hem güncellemede hemde yeni olusturmada kullanmak.
Örnekte ben bir kategori olusturma ve güncellemede kullandim.
resources/admin/category/crate.blade.php

@extends('admin/template/app')

@section('content')
    <!-- Content Header (Page header) -->
    <section class="content-header">
      <h1>
        Category
        <small>Create</small>
      </h1>

    </section>
    <!-- Main content -->
    <section class="content">

      @include('admin/category/form',
      array(
        'route' => array('admin.category.store'),
        'method' => 'POST'
           )
      )

    </section>
    <!-- /.content -->
@endsection
 

resources/admin/category/edit.blade.php

@extends('admin/template/app')

@section('content')
    <!-- Content Header (Page header) -->
    <section class="content-header">
      <h1>
        Category
        <small>Create</small>
      </h1>

    </section>
    <!-- Main content -->
    <section class="content">

      @include('admin/category/form',
      array(
        'route' => array('admin.category.update', $category->id),
        'method' => 'PATCH'
           )
      )

    </section>
    <!-- /.content -->
@endsection

resources/admin/category/form.blade.php

{!! Form::open(array('route' => $route, 'method' => $method)) !!}

 <div class="form-group">
    <label for="parent_id">Category</label>
    <select name="parent_id" class="form-control">
      <option>Main Category</option>
      @if(isset($categoriesFromDB))
        @foreach($categoriesFromDB as $categoryFromDB)
          <option value="{{ $categoryFromDB->id }}" @if($category->parent_id == $categoryFromDB->id) selected @endif>{{ $categoryFromDB->name }}</option>
        @endforeach
      @endif
    </select>
</div>
<div class="form-group">
    <label for="name">Name</label>
    <input type="text" name="name" value="{{ old('name',  isset($category->name) ? $category->name : null) }}" class="form-control" />
 </div>
<div class="form-group">
    <label for="slug">Slug</label>
    <input type="text" name="slug" value="{{ old('slug',  isset($category->slug) ? $category->slug : null) }}" class="form-control">
</div>
<div class="form-group">
    <label for="content">Content</label>
    <textarea name="content" id="editor" class="form-control" rows="3">{{ old('content',  isset($category->content) ? $category->content : null) }}</textarea>
</div>
<div class="form-group">
    <label for="image">Image</label>
    <input type="text" name="image" value="{{ old('image',  isset($category->image) ? $category->image : null) }}" class="form-control">
</div>

<button type="submit" class="btn btn-default">Submit</button>

Son düzenleyen kzorluoglu (19.05.2016 09:35:05)

Çevrimdışı

#2 19.05.2016 10:13:00

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,486
Website

Yanıt: Laravel Güncelleme ve Ekleme islemleri icin tek bir form kullanimi

Teşekkürler smile

Çevrimdışı

#3 20.05.2016 17:23:57

m.erin
Üye
Yer: Konya
Kayıtlı: 26.12.2012
Mesajlar: 165
Website

Yanıt: Laravel Güncelleme ve Ekleme islemleri icin tek bir form kullanimi

Ben bu şekilde kullanmak yerine old data'yı manipüle ediyorum. Controller' da ilgili action içerisinde var olan bilgiyi, session flash içerisindeki old anahtarına iliştiriyorum:

$news = News::findOrFail($id);
$old = [
    'title' => $news->title,
    'detail' => $news->detail
];
request()->session()->flash(
    '_old_input', $old
);

Form içerisinde input' larda direkt old helper' ını kullanarak varsayılan değeri gösteriyorum:

<input type="text" name="title" value="{{ old('title') }}">

Çevrimdışı

#4 20.05.2016 18:54:53

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,486
Website

Yanıt: Laravel Güncelleme ve Ekleme islemleri icin tek bir form kullanimi

Ben eski kafalıyım, create ve edit için her seferinde farklı dosyalar oluşturuyorum. cool

Çevrimdışı

#5 20.05.2016 21:36:11

m.erin
Üye
Yer: Konya
Kayıtlı: 26.12.2012
Mesajlar: 165
Website

Yanıt: Laravel Güncelleme ve Ekleme islemleri icin tek bir form kullanimi

Ben de sizin gibi kullanıyordum ama projedeki form sayısı artınca, en ufak bir değişiklikte işkence çektiğimi hissettim ve aktardigim yöntemi uygulamaya başladım. Aslında rails ile geliştirilen bir projede bu şekilde kullanıldığını gördüm ve bunu laravel'e uyarladim desem daha doğru olur smile

Çevrimdışı

#6 19.06.2016 14:51:15

tutkun
Üye
Kayıtlı: 05.11.2014
Mesajlar: 54

Yanıt: Laravel Güncelleme ve Ekleme islemleri icin tek bir form kullanimi

Merhabalar, güzel bir yöntem aslında. Ama <form/> etiketi PATCH metodunu desteklemiyor. Bunun için {{ method_field('PATCH') }} kullanıyorlar form tag'ı içinde. smile

Çevrimdışı

#7 19.06.2016 15:38:05

loc
Üye
Yer: İstanbul
Kayıtlı: 08.06.2015
Mesajlar: 275
Website

Yanıt: Laravel Güncelleme ve Ekleme islemleri icin tek bir form kullanimi

laravel e ilk başladığımda laracasts eğitim setlerine bakmıştım. Orada da bu şekilde kullanılıyordu. Ben de bu şekilde kullanıyorum. Lakin bazen multiple checkbox gibi işlemlerde sıkıntı çıkabiliyor. Bunu da rotaya bakarak halletmek durumunda kalıyorsun.

Çevrimdışı

Forum alt kısmı