- Düzenlendi
HTML::macro('alert', function($type, $message, $auto = true)
{
$autoCloseAttr = ($auto)?' data-alert-auto':'';
if(!empty($message))
return '<div class="alert alert-'. $type .'"'.$autoCloseAttr.'><a class="close" data-dismiss="alert" href="#" aria-hidden="true">×</a>' . $message . '</div>';
});
HTML::macro('errors', function($type = 'danger', $auto = true)
{
$errors = Session::get('errors', new Illuminate\Support\MessageBag);
$autoCloseAttr = ($auto)?' data-alert-auto':'';
if($errors->has()) {
$alert = '<div class="alert alert-'.$type.'"'.$autoCloseAttr.'><a class="close" data-dismiss="alert" href="#" aria-hidden="true">×</a>';
$alert .= '<ul class="list-unstyled">';
foreach ($errors->all('<li>:message</li>') as $message) {
$alert .= $message;
}
$alert .= '</ul></div>';
return $alert;
}
});
Sitenizde mesajların gözükmesini istediğiniz yere ekleyin. Ben genellikle her sayfaya tek tek eklememek için default layouta ekliyorum
{{ HTML::errors() }}
{{ HTML::alert('success',Session::get('success')) }}
Kullanımı ise:
// örneğin
return Redirect::route('route.name')->with('success','Kayıt başarıyla eklendi');
return Redirect::back()->withErrors('Bilinmeyen bir hata meydana geldi!');
// Validator hataları (tek ya da birden fazla hataya uygun)
$validator = Validate::make(...
if($validator->fails()) return Redirect::back()->withErrors($validator);
Hata mesajlarının otomatik kapanmasını istiyorsanız sitenize şu jquery betiğini ekleyin:
$(function() {
window.setTimeout(function() {
$("[data-alert-auto]").fadeTo(500, 0).slideUp(500, function(){
$(this).remove();
});
}, 3000); // 3000 = 3sn içinde kapanacak
});