Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?
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>
Teşekkürler
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') }}">
Ben eski kafalıyım, create ve edit için her seferinde farklı dosyalar oluşturuyorum.
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
bir ay sonra
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.
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.