2014-12-27 3 views
1

Документация по упаковке Zizaco/confide на Laravel не очень описательна, когда объясняется, как использовать специальные валидаторы. Я хотел бы иметь возможность проверять поля имени, фамилии, адреса, города, штата и т. Д. В моем процессе регистрации, однако я не нашел ничего, что работает, кроме изменения пакета поставщика. За документацией, я должен быть в состоянии сделать это в app/models/AccountValidator.phpLaravel with Confide - Пользовательский валидатор не работает?

<?php 
use Zizaco\Confide\UserValidatorInterface; 
use Zizaco\Confide\ConfideUserInterface; 

class AccountValidator implements UserValidatorInterface { 

    public function validate(ConfideUserInterface $user) { 

     unset($user->password_confirmation); // Because this column doesn't really exists. 

     Log::info("Using a custom validator!"); 

     return true; 
    } 
} 

и app/start/global.php

App::bind('confide.user_validator', 'AccountValidator'); 

Я пытался ставить свои правила в функции валидации, а также за ее пределами, не повезло , вместо проверки чего-либо он попытается вставить пустые значения в базу данных. Я также пробовал composer dump-autoload, как упомянуто here. Я нашел , но единственный ответ, похоже, не является «официальным» решением, и Zizaco не ответил на this question на Github (да, я тоже пробовал этот код), поэтому я не уверен, что еще попробовать.

Любые предложения?

+0

Хм ... похоже, что вы делаете это правильно. Добавили ли вы 'implements ConfideUserInterface' в свою модель и добавили' use ConfideUser' внутри декларации класса? –

+0

Да, это всегда одна из первых вещей, которые я делаю. Он проверяет поля имени пользователя, электронной почты и пароля - ни одна из дополнительных функций. Однако я заметил, что в пакете поставщика есть два разных набора правил (https://github.com/Zizaco/confide/blob/master/src/Confide/UserValidator.php#L44). Должен ли я также передавать этот многомерный массив в пользовательский валидатор? – Winter

+0

Похоже, вам нужно передать '$ rules' как многомерный массив. Посмотрите на строку 163 UserValidator.php. Я проверил свой «UserValidator», а мой настроен как многомерный. –

ответ

3

Это, как я это делаю:

<?php 

use Zizaco\Confide\UserValidator as ConfideUserValidator; 
use Zizaco\Confide\UserValidatorInterface; 

class UserValidator extends ConfideUserValidator implements UserValidatorInterface 
{ 
    public $rules = [ 
     'create' => [ 
      'username' => 'required', 
      'email' => 'required|email', 
      'password' => 'required|min:4', 
     ], 
     'update' => [ 
      'username' => 'required', 
      'email' => 'required|email', 
      'password' => 'required|min:4', 
     ] 
    ]; 
} 
+0

Работает отлично, спасибо! – Winter

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