2014-02-16 2 views
0

Я пытаюсь создать собственное правило проверки в laravel 4 и изо всех сил пытаюсь заставить его работать или понять, что я делаю.Попытка создать пользовательскую проверку в laravel 4

В настоящее время - когда я пытаюсь представить форму и проверить его я получаю следующее в моем браузере:

/**/ 

который я везу как что-то сломан!

Я создал класс в app/validators/customValidate.php

class CustomValidate extends Illuminate\Validation\Validator 
{ 

public function uniqueMailchimp($attribute, $value, $parameters) 
{ 
    $mailchimp = MailchimpWrapper::lists() 
    ->memberInfo(
    'xxxxxxx', 
    array('emails'=>array(
     'email'=>$value 
     ) 
    )); 

    //dd($$mailchimp['success_count']); 

    return ($mailchimp['success_count'] > 0 ? false : true); 
} 

Я бежал композитор дамп-autload

В моем контроллере я делаю следующее:

$rules = array(
      'email' =>'email|uniqueMailchimp', 

     ); 

    $messages = array(
      'uniqueMailchimp'=>'The email provided has already been used.' 
     ); 

    $validator = Validator::make($data, $rules, $messages); 

} 

Я тогда проверка действующая форма с:

if($validator->passes()) { 
    # code 
} 

, если проверка не пройдена контроллер должен перенаправить к просмотру:

return Redirect::route('members.create') 
     ->withInput() 
     ->withErrors($validator) 
     ->with('errMessage', $message); 

Я, наверное, пропустил шаг. Я видел сообщения о регистрации правила в global.php, но я не уверен, что делаю.

Любая помощь оценили

ответ

0

Вы совершенно правы - вы должны зарегистрировать правило с валидатора. В любой самозагрузке-подобный файл (поставщик услуг является лучшим кандидатом, если у вас есть, еще app/start/global.php хорошо, и routes.php не был бы сумасшедшим, либо) вам потребуется следующий код:

Validator::extend('foo', '[email protected]'); 

Однако, если вы посмотрите на the docs, вы увидите, что для этого вам не нужен целый класс - вы можете просто сделать это как закрытие. Класс полезен, если вы хотите, чтобы автоматический IoC DI выполнялся для вас (хотя вы, похоже, не используете его в своем валидаторе).

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