Skip to content

Instantly share code, notes, and snippets.

@beratdogan
Last active December 31, 2015 19:49
Show Gist options
  • Save beratdogan/8035982 to your computer and use it in GitHub Desktop.
Save beratdogan/8035982 to your computer and use it in GitHub Desktop.
Laravel Denetim (Validation) Sınıfını AJAX ile Kullanmak
<?php
class Ticket extends Eloquent {
protected $guarded = array();
protected $table = 'tickets';
protected $softDelete = true;
public function messages()
{
return $this->hasMany('TicketMessage');
}
}
<?php
class TicketMessage extends Eloquent {
protected $guarded = array();
protected $table = 'ticket_messages';
public function ticket()
{
return $this->belongsTo('Ticket');
}
}
<?php
class TicketsController extends \BaseController {
public function store()
{
$rules = array(
'subject' => 'required|between:6,64',
'body' => 'required|between:10,250',
);
$validator = Validator::make(Input::all(), $rules);
// Girdiler $rules'a uygun değilse...
if ($validator->fails()) {
// Ajax isteği yapılmışsa json yanıtını döndür...
if (Request::ajax()) {
return Response::json(['result' => false, 'message' => $validator->messages()->toArray()]);
}
// Ajax değil normal bir istek yapılmışsa (ki burası iyi niyetli olmayan bir ziyaretçimiz olduğunun habercisidir)...
else {
return Redirect::route('v1.tickets.create')->withInput()->withErrors($validator);
}
}
// Ajax ile istek yapılmışsa ve girdiler $rules'a uygunsa...
if (Request::ajax()) {
return Response::json(['result' => true]);
}
// Verileri kaydet...
$ticket = new Ticket([
'user_id' => Auth::user()->id,
'subject' => Input::get('subject'),
'created_at' => new DateTime,
'updated_at' => new DateTime,
]);
$ticket->save();
$message = new TicketMessage([
'user_id' => Auth::user()->id,
'body' => Input::get('body'),
'created_at' => new DateTime,
'updated_at' => new DateTime,
]);
$ticket->messages()->save($message);
// Her şey tamam görünüyor, oluşturulmuş ticketslerin yanına gidelim...
return Redirect::route('v1.tickets.index');
}
// Diğer metodlar...
}
var validateResult = false;
$('#tickets-create-form').submit(function(event) {
if (!validateResult) {
event.preventDefault();
}
$me = $(this);
// Önceden verilmiş hatalar var ise onukaldırıyoruz...
$('#tickets-create-form-alert').remove();
$('.has-error').removeClass('has-error').addClass('has-success');
$.ajax({
url: $me.attr('action'),
type: $me.attr('method'),
data: $me.serialize()
})
.done(function(data) {
// Doğrulama yapılmış ise...
if (data.result == true) {
validateResult = true;
$me.trigger('submit');
}
// Doğrulama hatalı ise...
else {
$me.parent().prepend('<div class="alert alert-danger" id="tickets-create-form-alert"><ul></ul></div>');
$.each(data.message, function(key, value) {
$('#' + key).parent().parent().removeClass('has-success').addClass('has-error');
for (var i = 0; i < value.length; i++) {
$('#tickets-create-form-alert ul').append('<li>' + value[i] + '</ul>');
};
});
}
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment