Form Kütüphanesi


    × Bunları biliyor muydunuz?
"ZN Framework düzenlenebilir dizin yapısı ile kendi kod çatınızı oluşturmanıza imkan veren dünyadaki tek kod çatısıdır."


Form nesnelerini sınıf formuna getirerek gerek görünüm gerekse de kontrolcü içerisinde kullandırmayı amaçlar. Nesne zincirlemesi ile istenilen özellik değer çiftleri kolaylıkla eklenebilmektedir. Özellikle veritabanı ile doğrudan ilişkili çalışabilir olması standart form kullanımına göre büyük kolaylık ve avantaj sağlar. Ayrıca DB::, Validation:: ve Permission:: kütüphaneleri ile entegreli çalışır.

 

 

# Kurulum


ZN dağıtımları için kurulum gerekmez.

↓ composer require znframework/package-hypertext

 

 

# Yöntemler


Form::open(string $name = NULL, array $attr = []) : string
Form::close() : string
Form::text(string $name = NULL, string $value = NULL, array $attr = []) : string
Form::password(string $name = NULL, string $value = NULL, array $attr = []) : string
Form::textarea(string $name = NULL, string $value = NULL, array $attr = []) : string
Form::submit(string $name = NULL, string $value = NULL, array $attr = []) : string
Form::reset(string $name = NULL, string $value = NULL, array $attr = []) : string
Form::button(string $name = NULL, string $value = NULL, array $attr = []) : string
Form::radio(string $name = NULL, string $value = NULL, array $attr = []) : string
Form::checkbox(string $name = NULL, string $value = NULL, array $attr = []) : string
Form::select(string $name = NULL, array $options, string $selectedKey = NULL, array $attr = []) : string
Form::multiselect(string $name = NULL, array $options, string $selectedKey = NULL, array $attr = []) : string
Form::file(string $name = NULL, bool $multiupload = false, array $attr = []) : string
Form::__callHtml5(string $name = NULL, string $value = NULL, array $attr = []) : string
Form::__tostring() : string
Form::postback(bool $postback = true, string $type = 'post') : this
Form::validate(mixed ...$rules) : this
Form::vMethod(mixed ...$parameters) : string
Form::resetValidationRules(string $formName) : this
Form::serializer(string $uri, mixed $callback, mixed $datatype = 'standart') : this
Form::trigger(string $event, string $uri, mixed $callback, mixed $datatype = 'standart') : this

 

 

# Özellikler


Tüm HTML özellikleri yöntem adı olarak kullanılarak eklenebilir.

Form::id('example')->style('red:color')-> - - -

Yukarıda kullanılan id(), style() gibi yöntemler input nesnesinin özellik değer çiftini oluşturan yapıları belirlemek için kullanılır. Bu kullanım tüm form nesneleri için ortaktır. Her Form:: nesnesi kendi parametreleri dışında bu opsiyonel yöntemler ile de parametre kullanımlarını sağlayabilir. Eğer özellik birden fazla kelime ve aralarında tire(-) içeren bir yapıda ise bu özellik yöntem olarak camelCase yani exampleElement() formunda kullanılır.

Parametreler

string $value = NULL Varsa özelliğin değeri.
return this  

Kullanımlar

@Form::required()->placeholder('Name Please')->id('name')->text('name')
Tire Ayraçlı Kullanımlar

Eğer form özellikleriniz data-validation gibi - ile ayrılan bir özellikse camelCase standartında yazmanız gerekir.

@Form::dataValidation('required')->myId(1)->text('name', 'Value')
<input type="text" data-validation="required" my-id="1" name="name" value="Value">
Dizge Olmayan Parametre Gönderimi [6.40.3.8]

Bu güncellemede aşağıdaki düzenlemeler yapılmıştır.

Html Entity

Gönderilen veriler artık htmlentities() ile dönüştürülüyor.

boolean Gönderim

Önceden değer olarak true veya false göndermek için bu değerleri string vermek gerekiyordu. Artık gerçek boolean gönderiminde otomatik olarak string dönüşüm sağlanıyor.

@Form::abc(true)->text() # <input type="text" abc="true">

array veya Object Gönderim

Önceden array veya Object gönderiminde veri scalar olmaması nedeni ile hata üretiyordu. Artık bu veriler JSON formatına dönüştürülerek eklenmekte. Ancak tırnaklar htmlentities() ile dönüştürülüyor. Dolayısı ile verinin daha sonra kullanılabilir olması için html_entity_decode() ile dönüştürülmesi gerekir.

@Form::abc(["a" => 1])->text() # <input type="text" abc="{quotbquot:1}">

 

 

# Open


Html <form> kullanımının karşılığıdır.

Parametreler

string $name Nesne ismi.
array $attr = [] Özellikler.
return string  

Kullanımı

@Form::action('home')->method('get')->open('example-form')

Opsiyonel Yöntemler

Form::enctype(string $type) : this
Form::csrf() : this
Form::where(string $column, scalar $value, string $logical = 'and') : this
Form::query(string $query) : this
Form::process(string $process) : this
Form::getUpdateRow() : object
Form::duplicateCheck(...$columns = '*') : this
Form::prevent() : this
Enctype

Form nesnesinin enctype değerini ayarlamak için kullanılır. Özellikle dosya yükleme işlemlerinde bu değerin kullanılması gerekmektedir.

Parametreler

string $type

Tür.

multipart - application - text

return this

Kullanımı

@Form::enctype('multipart')->open('upload-form')
CSRF

CSRF ataklarını engellemek için token datası oluşturur.

Parametreler

return this

Kullanımı

@Form::csrf()->open('form')
Where

Form'a tablo kayıtını bağlamak için kullanılır. DB::where() kullanımı ile aynıdır. Bu yöntemle doğrudan istenilen tablonun istenilen koşula göre ilgili kayıtın bağlanmasını sağlayabilirsiniz. Tablo adı olarak form nesnesinin name değeri kullanılır.

Parametreler

string $column Kolon adı.
string $value Kolon değeri.
string $logical = 'and' and - or Bağlaç.
return this

Kullanımı

@Form::where('id', URI::get('id'))->open('accounts')

Form Nesneleri

Tablo tanımlamasından sonra diğer form nesneleri kayıttan gelen değeri otomatik alır. İstisna olarak checkbox, radio butonlar ve select nesnesinin kullanımı farklıdır.

Radio Buton

Radio butonların seçili olabilmesi için verilen değerin gelen kayıttaki değer ile eşleşmesi gerekmektedir.

Male  /: @Form::radio('gender', 1)
Female/: @Form::radio('gender', 2)

Yukarıdaki tanımlamada gender kolonuna ait değer hangisi ile eşleşirse o buton seçili hale gelir.

Checkbox Buton

Checkbox butonların seçili olabilmesi için verilen değerin gelen kayıttaki değer ile eşleşmesi gerekmektedir. Ancak genellikle checkbox değerleri [1,2,5,10] gibi json formunda saklanır. Json çözümlemesi otomatik olarak yapılarak ilgili butonlar seçilir.

@Form::checkbox('colors', 1)
@Form::checkbox('colors', 2)
@Form::checkbox('colors', 5)
@Form::checkbox('colors', 20)

Yukarıdaki butonlardan hangileri eşleşirse o butonlar seçili hale gelir.

Select List

Select nesnesinin seçili gelebilmesi için değerlerinin tanımlanmış olması gerekmektedir.

Gender/: @Form::select('gender', [1 => 'Male', 2 => 'Female'])

Yukarıdaki tanımlamada gender kolonuna ait değer hangisi ile eşleşirse o değer seçili hale gelir.

Query

Eğer kompleks sorguları tabloya bağlamak isterseniz bu yöntemden istifade edebilirsiniz. DB::query() yönteminin kullanımı ile aynıdır.

Parametreler

string $query Sorgu.
return this

Kullanımı

{{ Form::query(DB::string()->where('id', URI::get('id'))->accounts())->open('accounts') }}
Process

Form'un güncellenme ve ekleme işlemini otomatik olarak yaptırabilmeniz içindir.

Parametreler

string $process insert - update İşlem türü.
return this

Kullanımı

@Form::where('id', 1)->process('update')->open('users')
@Form::postback()->validate('required', 'xss')->text('name')
@Form::postback()->validate('email', 'required')->text('email')
@Form::select('gender', [1 => 'Male', 2 => 'Female'])
@Form::validate('required')->textarea('about')
@Form::submit('submit', 'Submit')
@Form::close()
@Form::validateErrorMessage()

Validasyon Hata Mesajını Yakalamak

Submit sonrası oluşan validasyon hatasını yakalamak için aşağıdaki 2 yöntemden yararlanılır.

Form::validateErrorMessage()
Form::validateErrorarray()
Uyarı: Bu yöntemlerin değer üretebilmesi için process() yönteminin kullanılıyor olması gerekmektedir.
GetUpdateRow

Form::process('update') kullanımınında form nesnelerine gelen tablo verilerini tutar.

Parametreler

return object

Kullanımı

@Form::where('id', 1)->process('update')->open('users')
{[ $row = Form::getUpdateRow() ]}
@Form::close()
Uyarı: Bu yöntemlerin değer üretebilmesi için process('update') yönteminin kullanılıyor olması gerekmektedir.
DuplicateCheck

Form::process('insert') yöntemi ile birlikte kullanılır. Insert işlemi sırasında aynı verinin tekrar kayıt edilmesini engeller. DB::duplicateCheck() yönteminin kullanımıdır.

Parametreler

string ...$columns = '*'
Kontrol edilecek kolonlar. Bu parametrenin boş bırakılması durumunda tüm ID dışındaki tüm kolonlar kontrol edilir.
return this

Kullanımı

@Form::duplicateCheck('message', 'subject')->process('insert')->open('accounts')
Prevent

Form'un submit buton ile sayfa yenilenmesini önlemek için kullanılır. Yani bir Form::submit() nesnesi ile formun post edilmesi durumunda sayfanın  yenilenmesini engellemek için kullanılır. Özellikle Form::submit() ile ajax gönderimleri yapmak istediğinizde kullanabilirsiniz.

Parametreler

return this

Kullanımı

@Form::prevent()->open('accounts')
@Form::vRequired()->text('name')
@Form::submit('send', 'SEND')
@Form::close()

 

 

# Close


Html </form> kullanımının karşılığıdır.

Parametreler

return string

Kullanımlar

@Form::close()
</form>

 

 

# Text


Html <form input="text"> kullanımının karşılığıdır.

string $name Nesne ismi.
string $value = NULL Değer.
array $attr = [] Özellikler.
return string

Kullanımlar

@Form::id('example-text')
     ->maxlength(10)
     ->text('textBox', 'Welcome!')
<input type="text" name="textBox" value="Welcome!" id="example-text" maxlength="10">
OnKeyWait [6.25.0][2021-10-15] new

Bir javascript işlevinin onkeyup olayına bağlı olarak belli bir süre sonra devreye girmesini sağlar.

string | callable $code Çalıştırılacak javascript kodları.
int $time = 300 Milisaniye cinsinden değer belirtilir. Örnek: 300 = 0.3 saniyedir.
return this

Kullanımlar

@Form::onkeywait('search()', 500)->text('search')

Yukarıdaki örnek kodda search nesnesi üzerinde tuşa basma işleminden 0.5 saniye sonra onkeyup olayının devreye girmesini istedik. Basma eylemi devam ettiği sürece olay gerçekleşmez.

Uyarı: Bu işlevin çalışması için jquery eklentisinin kurulu olması gerekmektedir.

 

 

# Password


Html <form input="password"> kullanımının karşılığıdır.

Parametreler

string $name Nesne ismi.
string $value = NULL Değer.
array $attr = [] Özellikler.
return string

Kullanımlar

@Form::password('password', '*****', ['maxlength' => 10])
<input type="password" maxlength="10" name="password" value="*****"> 

 

 

# Textarea


Html <textarea> kullanımının karşılığıdır.

Parametreler

string $name Nesne ismi.
string $value = NULL Değer.
array $attr = [] Özellikler.
return string

Kullanımlar

@Form::cols(50)->rows(5)->textarea('address', 'Address')
<textarea cols="50" rows="5" name="address">Address</textarea>

 

 

# Submit


Html <form input="submit"> kullanımının karşılığıdır.

Parametreler

string $name Nesne ismi.
string $value = NULL Değer.
array $attr = [] Özellikler.
return string

Kullanımlar

@Form::submit('sendSubmit', 'Send')
<input type="submit" name="sendSubmit" value="Send">

 

 

# Reset


Html <form input="reset"> kullanımının karşılığıdır.

Parametreler

string $name Nesne ismi.
string $value = NULL Değer.
array $attr = [] Özellikler.
return string

Kullanımlar

@Form::reset('clear', 'Clear')
<input type="reset" name="clear" value="Clear">

 

 

# Button


Html <form input="submit"> kullanımının karşılığıdır.

Parametreler

string $name Nesne ismi.
string $value = NULL Değer.
array $attr = [] Özellikler.
string

Kullanımlar

@Form::button('sendButton', 'Send')
<input type="button" name="sendButton" value="Send">

 

 

# Radio


Html <form input="radio"> kullanımının karşılığıdır.

Parametreler

string $name Nesne ismi.
string $value = NULL Değer.
array $attr = [] Özellikler.
string

Kullanımlar

@Form::checked()->radio('gender', 'Female')
@Form::radio('gender', 'Male')
<input type="radio" name="gender" value="Female" checked="checked">
<input type="radio" name="gender" value="Male">

 

 

# Checkbox


Html <form input="checkbox"> kullanımının karşılığıdır.

Parametreler

string $name Nesne ismi.
string $value = NULL Değer.
array $attr = [] Özellikler.
string

Kullanımlar

@Form::checked()->checkbox('trueType', 'true')
@Form::checkbox('trueType', 'false')
<input type="checkbox" name="trueType" value="true" checked="checked">
<input type="checkbox" name="trueType" value="false">

 

 

# Select / Multiselect


Html <select> kullanımının karşılığıdır.

Parametreler

string $name Nesne ismi.
array $options = [] Seçenekler.
mixed $selectedKey = NULL Seçili anahtar.
array $attr = [] Özellikler.
return string

Opsiyonel Yöntemler

Form::table(string $table) : this
Form::query(string $query) : this
Form::including(array $data) : this
Form::excluding(array $data) : this
Form::order(string $type = 'desc', string $flags = 'regular') : this
Form::option(mixed $key, string $value = NULL) : this
Form::onlyOptions() : this
Form::repeat() : this

Kullanımlar

$options = [ '34' => 'Istanbul', '19' => 'Corum' ];

echo Form::select('cities', $options, '19');
<select name="cities">
    <option value="34" >Istanbul</option>
    <option value="19" selected="selected">Corum</option>
</select>
Table

Seçenekleri doğrudan veritabanından çekmek isterseniz table() veya query() yöntemlerinden yararlanabilirsiniz.

string $table Tablo adı.
return this

Kullanımlar

echo Form::table('accounts')
         ->select('accountList', ['keyColumn' => 'valueColumn']);

İlk eleman için varsayılan anahtar değer tanımlaması yapmak isterseniz aşağıdaki gibi kullanabilirsiniz.

echo Form::table('accounts')->select('accountList',
[
//  'keyColumn'  => 'valueColumn'
    'id'         => 'name',
//  'defaultKey' => 'defaultValue'
    '0'          => 'Musteri seciniz'
]);

Değere Geriçağrım İşlevi Uygulama

Bu güncelleme ile Form::table() kullanımına bağlı olarak value parametresi manipüle edilebilir hale getirildi. Özellikle çok dilli sistemlerde value'nin seçili dile bağlı olarak değiştirilmesinin istenmesi durumunda kullanılabilir.

echo Form::table('categories')->select('Category', ['ID' => function($row)
{ 
    return $row->name; 
}])

JSON Çözümleme

Bu güncelleme ile Form::multiselect() yönteminin 3. parametresi JSON türünde olması halinde dizi gibi algılanıp çoklu seçim yapılabilmesi sağlandı.

@Form::table('categories')->multiselect('categories[]',  ['ID' => 'Name'], $row->categories)
Query

Table yerine doğrudan sorgu ile de istediğiniz kritere göre seçenekleri getirebilirsiniz.

string $query Sorgu.
return this

Kullanımlar

$query = DB::string()->accounts();

echo Form::query($query)->select('accountList', ['id' => 'name'])
Including

Liste içerisinde dahil tutmak istenenleri belirlemek için kullanılır. Dahil tutma için ister anahtar istenirse değer kullanılabilir.

array $data Dahil tutulacak seçeneklerin anahtar veya değeri.
return this

Kullanımlar

echo Form::including([2, 3])
         ->select('cityList',
         [
             1 => 'Istanbul', 
             2 => 'Londra', 
             3 => 'Paris'
         ]); 

// output: Londra, Paris
Excluding

Liste içerisinde hariç tutmak istenenleri belirlemek için kullanılır. Hariç tutma için ister anahtar istenirse değer kullanılabilir.

array $data Hariç tutulacak seçeneklerin anahtar veya değeri.
return this

Kullanımlar

echo Form::excluding([2, 3])
         ->select('cityList',
         [
             1 => 'Istanbul',
             2 => 'Londra',
             3 => 'Paris'
         ]); 

// output: İstanbul
Order

Dizi elemanları içerisinde sıralama yapmak için kullanılır.

string $type = 'desc' Sıralama yönü.
array $flags = 'regular' Sıralama seçeneği.
return this
echo Form::order('asc')->table('cities')->select('cityId', ['id' => 'name', '' => 'select city']);
Option

Seçenekleri dizi olarak eklemek yerine bu yöntemle de yapabilirsiniz

string $key Anahtar.
string $value Değer.
return this

Kullanımlar

echo Form::option(19, 'Çorum')->option(34, 'İstanbul')->selectedKey(19)->select('cities');
OnlyOptions [6.16.0][2021-07-01]

 Özellikle ajax işlemlerinde zincirleme select nesnelerini kullanımında select nesnesine ait sadece option etiketlerinin alınması istenen durumlarda kullanışlıdır.

return this

Kullanımlar

echo Form::onlyOptions()->table('cities')->select('cityId', ['id' => 'name', '' => 'select city']);
<option value="1">Paris</option> ... <option value="999">Istanbul</option>
Repeat [6.23.0][2021-09-20]

Belirli bir sayı aralığında seçenekler oluşturmak için kullanılır. 

@Form::repeat()->select('Year', [2000 => 2021])
2000, 2001 ... 2020, 2021

Yukarıdaki örnek kod 2000 den başlayarak 2021'e kadar seçenek oluşturur.

Dikkat: Yön önemli değildir. Sıralama küçükten büyüğe doğru yapılır.
@Form::repeat()->select('Year', [2021 => 2000])
2000, 2001 ... 2020, 2021

Büyükten küçüğe sıralaması yapmak için aşağıdaki gibi kullanabilirsiniz.

@Form::order('desc')->repeat()->select('Year', [2000 => 2021])
2021, 2020 ... 2001, 2000

Ön tanımlı değer eklemeniz de mümkün.

@Form::order('desc')->repeat()->select('Year', [2000 => 2021, '' => 'Select Year'])
Select Year, 2021, 2020 ... 2001, 2000

 

 

# File


Html <form input="file"> kullanımının karşılığıdır.

Parametreler

string $name Nesne ismi.
bool $multiple = false
Çoku dosya yüklemesi yapılabilsin mi? Bu değerin true ayarlanması durumuda dosya seçim penceresinde birden fazla dosya aynı anda seçilebilir.
array $attr = [] Özellikler.
return string

Kullanımlar

@Form::file('upload')
<input type="file" name="upload">
Çoklu Dosya Yükleme

Çoklu upload yapılmak istendiğinde ise aşağıdaki gibi bir kullanım mümkündür.

@Form::file('upload', true)
<input type="file" name="upload[]" multiple="multiple">

 

 

# __Call HTML5


Tüm HTML5 nesnelerinden form nesneleri aşağıdaki örnekte olduğu gibi kullanılabilmektedir.

Parametreler

string $name Nesne ismi.
string $value = NULL Değer.
array $attr = [] Özellikler.
return string

Kullanımlar

@Form::tel('myPhone')
@Form::range('myRange')
@Form::color('myColor')

Diğer tüm HTML 5'e ait form nesneleri yukarıdaki gibi kullanılabilir.

 

 

# __toString


Form yöntemlerini sıralı olarak kullanabilmenizi sağlar.

Parametreler

return string

Kullanımlar

@style('bootstrap')

@container
    @row
        @Form::open('contact')
             ->group()->label('name', 'Name:')->text('name')
             ->group()->label('subject', 'Subject:')->text('subject')
             ->group()->label('message', 'Message:')->textarea('message')
             ->close()
    @endrow
@endcontainer

@script('jquery', 'bootstrap')

Yukarıdaki kullanımda dikkat edilirse form nesneleri her defasında Form:: deyimi kullanılmayarak zincirleme bir kullanım oluşturulmuştur..

 

 

# Postback


Form submit edildiğinde form öğelerinin son değerinin korunmasını sağlamak için kullanılır.

Parametreler

bool $postback = true Değerler korunsun mu? False olması durumunda değerler korunmaz.
string $type = 'post'
post - get - request Formun method türü belirtilmişse bu değer formun mevcut method türüne göre değer alır.
return this

Kullanımlar

@Form::postback()->text('name')

 

 

# Validate


Validation::rules() yönteminin görevini üstlenir. Farklı olarak kuralları form nesnesi ile birlikte kullanabilmenizi sağlar.

Parametreler

mixed ...$args Kurallar dizisi.
return this

Kullanımlar

@Form::validate('required', 'xss', ['minchar' => 10])->text('name')
Takma İsim

Takma isim validasyon kontrolünün başarısızlığı durumunda dönen metinde form nesnesi isminin nasıl görüntüleneceğini ayarlarmak için kullanılır.

@Form::validate('required', 'xss', ['minchar' => 10])->alias('Name:')->text('name')
Kuralların Kontrolü

Form nesnesi üzerinden gönderilen kurallar Controller ayağında Validation::check($submitName) yöntemi ile kontrol edilmesi gerekmektedir.

Dosya: Views/home/main.wizard.php
@Form::open('userForm')

@Form::postback()
     ->validate('email', 'required')
     ->alias('Email/:')
     ->text('email')

@Form::submit('submit', 'Submit')

@Form::close()

{{ $error ?? NULL }}
Dosya: Controllers/home.php
<?php namespace Project\Controllers;

use Validation, Post;

class Home extends Controller
{
    public function main()
    {
        if( ! Validation::check('submit') )
        {
            View::error(Validation::error('string'));
        }
    }
}

 

 

# vMethod


Html ile ZN Framework'ün validasyon yöntemlerinin harmanlanmış halidir. Kullanıcıya daha kısa sürede geri bildirim sağlaması açısından html'nin validasyonu devreye girerken arkaplanda ZN'nin validasyonu devreye girer. Standart olarak bu yöntemler v harfi ile başlar. İşlev olarak ZN validasyon yöntemleri gibidir.

Yöntemler

Form::vNumeric() : this Sayısal karakter kontrol.
Form::vAlpha() : this Alfabetik karakter kontrolü.
Form::vAlnum() : this Alfabetik veya sayısal karakter
Form::vEmail() : this E-posta kontrolü.
Form::vUrl() : this URL kontrolü.
Form::vRequired() : this Boş kontrolü.
Form::vLimit(int $min = 0, int $max = NULL) : this
Alt ve üst karakter sınır kontrolü.
Form::vMinchar(int $min = 0) : this Alt karakter sınır kontrolü.
Form::vMaxchar(int $max = 0) : this Üst karakter sınıf kontrolü.
Form::vBetween(int $min = 0, int $max = 0) : this
Sayı aralık kontrolü.
Form::vCaptcha() : this ZN captcha kontrolü.
Form::vAnswer() : this Güvenlik sorusu kontrolü.
Form::vPhone(string $pattern = NULL) : this Telefon numarası kontrolü.
Form::vPattern(string $pattern) : this Belirtilen desene göre veri kontrolü.
Form::vIdentity() : this Kimlik numarası kontrolü.
Form::vMatch(string $value) : this Form input nesnesinin isim bilgisine göre karşılaştırma yapar.
Form::vMatchPassword(string $value) : this Kullanımı vMatch() gibidir tek fark ürettiği mesajdır.
Form::vMessage(string $message) : this
Geçersiz bilgi girişi durumunda gösterilmek istenen mesaj. Ön tanımlı olarak Validation:: kütüphanesinin mesajları gösterilir.

Kullanım

 Dosya: Views/Contact/main.wizard.php
@Form::open('contactForm')
@Form::vMinchar(3)->text('name')
@Form::vEmail()->vMaxchar(100)->text('email')
@Form::vPhone('***-***-**-**')->text('phone')
@Form::vLimit(5, 200)->text('subject')
@Form::vMinchar(3)->vMessage('Bu alan en az 3 karakterli olmalıdır!')->textarea('message')
@Form::submit('send', 'SEND')
@Form::close()
Dosya: Controllers/Contact.php
<?php namespace Project\Controllers;

use Validation, DB;

class Home extends Controller
{
    public function main()
    {
        if( Validation::check('send') )
        {
            DB::duplicateCheck()->insert('post:tickets');
        }
    }
}

 

 

# ResetValidationRules [6.13.0][2021-06-07]


Form kütüphanesi ile oluşturulan validasyon kuralları session olarak tutulur. Kurallar da herhangi bir değişiklik yapılması durumunda mevcut kuralların oturum verisinin temizlenmesi için kullanılır.

Parametreler

string $formName Validasyon kuralları silinecek formun adı.
return this

Kullanımlar

@Form::resetValidationRules('contactForm')

 

 

# Serializer

Bir formun tüm verilerinin ajax ile bir kontrolcüye gönderilmesini sağlar. Genellikle Form::button() yöntemi ile kullanılır.

Ön Bilgiler

Veriler post yöntemi ile gönderilmektedir. Dolayısı ile değerlere Post::inputName() ile erişilir.
Ajax işleminin başarılı ile gerçekleştirilmesi durumunda dönen değer javascript'in data isimli değişkeninde saklanmaktadır.

Uyarı: Ajax gönderimi Jquery ile yapıldığı için bu javascript kütüphanesinin sisteme dahil edilmiş olması gerekmektedir.

Parametreler

string $uri Ajax isteğinin hangi kontrolcü yöntemine yapılacağıdır.
mixed $callback Bir html nesnesinin seçiçi bilgisi veya ajax:success geri çağrım işlevi gibi kullanılabilir. 
mixed $datatype = 'standart'
Bu parametre veri türünü json formatında kabul edecek şekilde ayarlanabildiği gibi bir ajax'ın standart özellikleri dışında farklı bir özelliğin eklenmesi için kullanılabilir.
return this

Kullanımlar

Dosya: Views/Contact/main.wizard.php
@Form::open('contact-form')
@Form::text('name')
@Form::textarea('message')
@Form::serializer('Contact/ajaxSendForm', '#successDiv')->button('send', 'SEND')
@Form::close()

Yukarıda Contact/ajaxSendForm yöntemine ajax ile tüm formun verilerini gönderdik. Bu giden verileri işledikten sonra işlem sonucunu $('#successDiv').html(data) nesnesine yazdırdık. Giden veriler post yöntemi ile gönderilmektedir.

Not: 2. parametre'nin string değer alması durumunda ilgili html etiketinin içeriğine dönen değeri yazdırır.
Geriçağrım İşlevi

2. parametrenin {< kodlarınız >} biçiminde kullanımı ile yöntem içerisine doğrudan javascript yazabilmenizin önünü açıyor. Ajax işleminin success durumunda gelen veri data isimli javascript değişkeninde saklanmaktadır.

Dosya: Views/Contact/main.wizard.php
@Form::open('contact-form')
@Form::text('name')
@Form::textarea('message')
@Form::serializer('Contact/ajaxSendForm', 
{<
    if( data.success === true )
    {
        $('#successDiv').html('İşlem başarılı.');
    }
    else
    {
        $('#errorDiv').html('İşlem başarısız!');
    }
>}, 'json')->button('send', 'SEND') 
@Form::close()
Ajax Parametrelerini Genişletme

Ajax işlemine datatype dışında farklı parametreler de eklemek isterseniz 3. parametrenin dizi olarak gönderilmesi gerekmektedir.

@Form::open('contact-form')
@Form::text('name')
@Form::textarea('message')
@Form::serializer('Contact/ajaxSendForm', {< swal(data) >}, 
[
    'dataType' => 'json',
    'async'    => true
])->button('send', 'SEND')
@Form::close()

 

 

# Trigger


Bir form nesnesinin değerinin ajax ile bir kontrolcüye gönderilmesini sağlar. Form::serializer() kullanımına çok benzer farklı olarak hangi olay ile tetikleneceğinin ayarlanabiliyor olmasıdır. Bunun dışında ajax ile sadece kendi değerini yollar. Bu kullanımından dolayı Form::text() vb. gibi form nesneleri ile kullanımı önerilir.

Ön Bilgiler

Form nesnesinin değeri post yöntemi ve kendi ismi ile gönderilir. Yani nesnenin değeri sunucu tarafında Post::inputName() ile alınır.
Ajax işleminin başarılı ile gerçekleştirilmesi durumunda dönen değer javascript'in data isimli değişkeninde saklanmaktadır.
Geriçağrım kullanımında ilgili nesnenin karşılığı javascript'in element isimli değişkeninde saklanmaktadır. Örn: $(element).val() gibi kullanım gerektiren durumlar için kullanabilirsiniz.

Parametreler

string $event Veri gönderme işleminin hangi olay türü ile tetikleneceğini belirtir.
string $uri Ajax isteğinin hangi kontrolcü yöntemine yapılacağıdır.
mixed $callback Bir html nesnesinin seçiçi bilgisi veya ajax:success geri çağrım işlevi gibi kullanılabilir. 
mixed $datatype = 'standart'
Bu parametre veri türünü json formatında kabul edecek şekilde ayarlanabildiği gibi bir ajax'ın standart özellikleri dışında farklı bir özelliğin eklenmesi için kullanılabilir.
return this

Kullanımlar

Dosya: Views/Contact/main.wizard.php
@Form::open('contact-form')
@Form::trigger('keyup', 'Validations/control', 
{< 
    if(data === false) swal('Geçersiz girdi!'); 
>})->text('name') 
@Form::textarea('message')
@Form::serializer('Contact/ajaxSendForm', '#successDiv')->button('send', 'SEND')
@Form::close()

Diğer parametrelerin kullanımları Form::serializer() yöntemi ile aynıdır.