2016-08-28 4 views
-2

У меня нет представления для этого контроллера. Я хочу использовать проверку Laravel для проверки переменных. и показать собственные ошибки, возвращая строку в контроллер (я не использую вид, лезвие, сеанс ... Я просто возвращает строку)Laravel 5.2 Проверка в контроллере

if(strlen($username) < 4) return '{"r": "US","msg": "username is short"}'; 
    if(strlen($username) > 64) return '{"r": "UL","msg": "username is long"}'; 
    if(preg_match("/(\S*\d+\S*[[:alpha:]]+\S*)|(\S*[[:alpha:]]+\S*\d+\S*)/", $password)) return '{"r": "P","msg": "wrong password"}'; 
    if(strlen($name) > 32) '{"r": "N","msg": "wrong name"}'; 
    if(strlen($address) > 200) '{"r": "A","msg": "wrong address"}'; 

Я хочу что-то вроде этого:.

'username' => 'required|min:4|max:64|unique:users|regex:/[a-zA-Z]+[a-zA-Z0-9_]*/', 
    'email' => 'required|unique:users|email|min:8', 
    ... 

ответ

1

Вы можете используйте фасад Validator для проверки любого запроса в вашем контроллере. Вы также можете расширить его своими сообщениями.

$validator = Validator::make($request->all(), [ 
    'username' => 'required|min:4|max:64|unique:users|regex:/[a-zA-Z]+[a-zA-Z0-9_]*/', 
    'email' => 'required|unique:users|email|min:8', 
], 
[ 
    'email.required' => 'Email is required', 
    'username.unique' => 'Username is taken' 
]); 

Вы можете даже решить, что делать, если эта проверка не пройдена

if ($validator->fails()) { 
    return redirect()->route('register') 
     ->withErrors($validator) 
     ->withInput(); 
} 

Теперь, если вам необходимо получить доступ к этим сообщениям об ошибках вместо этого, вы можете сделать:

if($validator->fails()) { 
    $errors = $validator->errors(); 
} 

Теперь вам имеют доступ к сообщениям об ошибках, которые вы определили, и по умолчанию, если они не переопределены.

+0

Tanx. но как я могу понять, какая переменная имеет ошибку или какая ошибка? –

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