2014-12-25 2 views
3

Я делаю все валидации в моделиLaravel бросать ошибку от модели, если условие не выполняется

Моего правило

public static $rules = array(
     'VehicleNumber' => 'required|unique:vehicle', 
     'NumberSeats' => 'required', 
     'VehicleType' => 'required', 
     'MaximumAllowed' => 'numeric|max:3', 
     'VehicleCode' => 'required|unique:vehicle'); 
} 

Но для изменения имени файла и проверки размера я обработка в SetFooAttribute

public function setInsurancePhotoAttribute($InsurancePhoto) 
{ 
    if($InsurancePhoto && Input::file('InsurancePhoto')->getSize() < '1000') 
    { 
    $this->attributes['InsurancePhoto'] = Input::get('VehicleCode') . '-InsurancePhoto.' . Input::file('InsurancePhoto')->getClientOriginalExtension(); 
    Input::file('InsurancePhoto')->move('assets/uploads/vehicle/', Input::get('VehicleCode') . '-InsurancePhoto.' . Input::file('InsurancePhoto')->getClientOriginalExtension()); 
    } 
} 

Там в Условии

if($InsurancePhoto && Input::file('InsurancePhoto')->getSize() < '1000') 

Если это не удается, сохранение атрибута настройки не будет выполнено.

Но как я могу выбросить ошибку пользователю в этом случае?

ответ

0

Вы можете выбросить исключение с сообщением об ошибке.

Модель

if($InsurancePhoto && Input::file('InsurancePhoto')->getSize() < '1000') { 
    // process image 
} else { 
    throw new \Exception('Error message'); 
} 

В контроллере (где вы вызываете проверки) вы можете поймать это исключение и распечатать его пользователю.

+0

Исследуется, для проверки, Но я не получаю сообщение об ошибке исключения – ABD

0

getSize() return integer, поэтому вам не следует использовать строку для сравнения, поскольку вы написали 1000 в одинарных кавычках. Вы можете создать свою собственную проверку в laravel. Проверьте это ссылки stackoverflow и http://culttt.com/2014/01/20/extending-laravel-4-validator/

+0

Но я не знаю, где разместить вышеуказанный код – ABD

Смежные вопросы