Last active
December 31, 2015 19:49
Laravel Denetim (Validation) Sınıfını AJAX ile Kullanmak
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class Ticket extends Eloquent { | |
protected $guarded = array(); | |
protected $table = 'tickets'; | |
protected $softDelete = true; | |
public function messages() | |
{ | |
return $this->hasMany('TicketMessage'); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class TicketMessage extends Eloquent { | |
protected $guarded = array(); | |
protected $table = 'ticket_messages'; | |
public function ticket() | |
{ | |
return $this->belongsTo('Ticket'); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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... | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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