Estou usando o espetacular Laravel Framework, mas tenho um problema de validação que não posso resolver de forma alguma tentando validar um único campo de e-mail.
Minha entrada de formulário é:
{{ Form::email("email", Input::old("email"), array("id" => "email", "class" => "span4", "placeholder" => Lang::line("newsletter.email")->get($lang), "novalidate" => "novalidate")) }}
Meu controlador
public function post_newsletter() {
$email = Input::get("email");
$v = Newsletter::validator($email, Newsletter::$rules);
if($v !== true)
{ ... }
else
{ ... }
}
e meu modelo
class Newsletter extends Eloquent {
/**
* Newsletter validation rules
*/
public static $rules = array(
"email" => "required|email|unique:newsletters"
);
/**
* Input validation
*/
public static function validator($attributes, $rules) {
$v = Validator::make($attributes, $rules);
return $v->fails() ? $v : true;
}
}
Eu fiz isso tantas vezes com sucesso comformas muito complicadas, mas agora, mesmo se eu digitar um e-mail válido eu recebo uma mensagem de erro sobre exigida fied etc Estou faltando alguma coisa? Talvez seja o fato de eu tentar validar apenas um único campo? Eu realmente não entendo porque isso acontece.
Respostas:
1 para resposta № 1Eu acredito que isso pode ser porque você não está passando em uma matriz de atributos (ou uma matriz de dados, basicamente).
Tente usar o compact
função para gerar uma matriz como esta.
array("email" => $email);
Aqui está como você deve fazer isso.
$v = Newsletter::validator(compact("email"), Newsletter::$rules);