/ / Laravel 3 Validação de um único formulário de entrada - php, validação, laravel, laravel-3

Laravel 3 Validação de um único formulário de entrada - php, validação, laravel, laravel-3

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 № 1

Eu 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);