turk porno porno escort rokettube
Ergebnis 1 bis 4 von 4

Thema: Eigener Validator - Registrierung im Service Manager

  1. #1
    Neuer Benutzer
    Registriert seit
    28.02.2013
    Beiträge
    15
    Thanks
    2
    Thanked 1 Time in 1 Post

    Standard Eigener Validator - Registrierung im Service Manager

    Hallo zusammen,

    ich möchte einen eigenen Validator erstellen und scheitere schon daran, diesen richtig im ServiceManager verfügbar zu machen. Sobald ich ihn verwenden möchte, erhalte ich die Fehlermeldung (aus dem ServiceManager):

    Zend\Validator\ValidatorPluginManager::get was unable to fetch or create an instance for myValidator

    Stack trace:
    #0 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\ServiceManager \AbstractPluginManager.php(103): Zend\ServiceManager\ServiceManager->get('myValidator', true) #1 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\Validator\Vali datorChain.php(82): Zend\ServiceManager\AbstractPluginManager->get('myValidator', Array) #2 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\Validator\Vali datorChain.php(149): Zend\Validator\ValidatorChain->plugin('myValidator', Array) #3 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\InputFilter\Fa ctory.php(374): Zend\Validator\ValidatorChain->attachByName('myValidator', Array, false) #4 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\InputFilter\Fa ctory.php(244): Zend\InputFilter\Factory->populateValidators(Object(Zend\Validator\Validato rChain), Array) #5 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\InputFilter\Fa ctory.php(302): Zend\InputFilter\Factory->createInput(Array) #6 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\Form\Form.php( 795): Zend\InputFilter\Factory->createInputFilter(Array) #7 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\Form\Form.php( 657): Zend\Form\Form->attachInputFilterDefaults(Object(Zend\InputFilter \InputFilter), Object(Projekt\Form\ProjektForm)) #8 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\Form\Form.php( 173): Zend\Form\Form->getInputFilter() #9 C:\Users\mh\work\xampp\htdocs\wuttodo\module\Todo\ view\todo\projekt\edit.phtml(6): Zend\Form\Form->prepare() #10 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\View\Renderer\ PhpRenderer.php(507): include('C:\Users\mh\wor...') #11 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\View\View.php( 205): Zend\View\Renderer\PhpRenderer->render(Object(Zend\View\Model\ViewModel)) #12 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\View\View.php( 233): Zend\View\View->render(Object(Zend\View\Model\ViewModel)) #13 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\View\View.php( 198): Zend\View\View->renderChildren(Object(Zend\View\Model\ViewModel )) #14 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\Mvc\View\Http\ DefaultRenderingStrategy.php(102): Zend\View\View->render(Object(Zend\View\Model\ViewModel)) #15 [internal function]: Zend\Mvc\View\Http\DefaultRenderingStrategy->render(Object(Zend\Mvc\MvcEvent)) #16 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\EventManager\E ventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) #17 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\EventManager\E ventManager.php(207): Zend\EventManager\EventManager->triggerListeners('render', Object(Zend\Mvc\MvcEvent), Array) #18 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\Mvc\Applicatio n.php(347): Zend\EventManager\EventManager->trigger('render', Object(Zend\Mvc\MvcEvent)) #19 C:\Users\mh\work\xampp\htdocs\wuttodo\vendor\zendf ramework\zendframework\library\Zend\Mvc\Applicatio n.php(322): Zend\Mvc\Application->completeRequest(Object(Zend\Mvc\MvcEvent)) #20 C:\Users\mh\work\xampp\htdocs\wuttodo\public\index .php(12): Zend\Mvc\Application->run() #21 {main}


    in meine module.config.php habe ich in das return array eingefügt:

    PHP-Code:
     'validators' => array(
                
    'invokables' => array(
                        
    'myValidator' => 'Projekt\Form\Validator\MyValidator',
                ),
        ), 
    Verwendet werden soll der Validator in einem Fieldset:

    PHP-Code:
    <?php
    namespace Projekt\Form;

    use ...

    class 
    ProjektFieldset extends Fieldset implements InputFilterProviderInterface
    {
        public function 
    __construct()
        {
            
    parent::__construct('projekt');
            
    $this->setHydrator(new ClassMethodsHydrator(false))
                ->
    setObject(new Projekt());


          
    //...
            
    $this->add(array(
                    
    'type' => 'Zend\Form\Element\Collection',
                    
    'name' => 'benutzer',
                    
    'options' => array(
                            
    'label' => 'User',
                            
    'should_create_template' => true,
                            
    'allow_add' => true,
                            
    'template_placeholder' => '__placeholder__',
                            
    'count' => 1,
                            
    'prepare_element' => true,
                    )
            ));
        }

         
    /**
         * Should return an array specification compatible with
         * {@link Zend\InputFilter\Factory::createInputFilter()}.
         *
         * @return array
         */
        
    public function getInputFilterSpecification()
        {
            return array(       
                
    //...
           
                
    'benutzer' => array(
                    
    'required' => true,                
                    
    'validators' =>  array(
                            array(
                                
    'name' => 'myValidator',                                
                            ),
                    )
                ),
             );
        }

    }
    Der Validator (eigentlich bisher ja irrelevant, da er ja garnicht gefunden wird. Enthält noch keine Logik):

    PHP-Code:
    <?php
    namespace Projekt\Form\Validator;

    use 
    Zend\Validator\AbstractValidator;

    class 
    MyValidator extends AbstractValidator
    {
        
    /* This validation fails for the following reasons:
         ** collection-set contains zero team-members
         */
        
        
    const MSG_EMPTY 'msgEmpty';
        
        protected 
    $messageTemplates = array(
                
    self::MSG_EMPTY => "The projekt team needs at least one member",
        );
        
        public function 
    isValid($value$context null)
        {
            
    $this->error($value);
            return 
    false;    
        }
    }
    Diesen Link hier habe ich bereits gefunden, verstehe aber nicht, was ich anders machen soll/muss

    https://github.com/zendframework/zf2/issues/4219

    Danke für eure Hilfe

  2. #2
    Erfahrener Benutzer Avatar von Ralf
    Registriert seit
    14.12.2006
    Beiträge
    450
    Thanks
    0
    Thanked 47 Times in 37 Posts

    Standard

    Moin,

    mir fehlt leider gerade die Zeit, um diese Thematik ausreichend beantworten zu können. Nur soviel: damit du eigene Validatoren in Formularen auf diese Weise einsetzen kannst, musst du

    • Validatoren über den ValidatorManager konfigurieren (hast du bereits)
    • Filter über den FilterManager konfigurieren
    • InputFilter über den InputFilterManager konfigurieren
    • Formulare und Fieldsets über den FormElementManager konfigurieren


    Außerdem muss der Aufbau der InputFilter in der init() Methode stattfinden und der Aufbau der Formulare und Fieldsets ebenfalls über deren init() Methode erfolgen. Nur dann kann der FormElementManager auf den InputFilterManager zugreifen, der dann wiederum auf den ValidatorManager zugreifen kann.Gleiches gilt für den FilterManager.

    Ich befürchte, dass dir diese Antwort aber ohne konkrete Beispiele nicht viel weiterhelfen wird. Das Ganze ist bisher leider vollkommen undokumentiert. Vielleicht schaffe ich das einmal in den nächsten Tagen.

    Gruß,

    Ralf

  3. The Following User Says Thank You to Ralf For This Useful Post:

    frollein (13.08.2013)

  4. #3
    Neuer Benutzer
    Registriert seit
    28.02.2013
    Beiträge
    15
    Thanks
    2
    Thanked 1 Time in 1 Post

    Standard

    Hey Ralf, danke für deine Antwort! Ein Beispiel wäre echt klasse, aber zumindest ist das schon einmal ein Ansatz.

    Grüße,
    Meike

  5. #4
    Neuer Benutzer
    Registriert seit
    28.02.2013
    Beiträge
    15
    Thanks
    2
    Thanked 1 Time in 1 Post
    Geändert von frollein (09.09.2013 um 13:26 Uhr)

Ähnliche Themen

  1. Validator ServiceLocator oder Service übergeben
    Von extexo im Forum ZF2 Einsteigerfragen
    Antworten: 10
    Letzter Beitrag: 05.02.2013, 19:23
  2. Service Manager leer nach Post
    Von sodiummd im Forum ZF2 Einsteigerfragen
    Antworten: 2
    Letzter Beitrag: 13.10.2012, 01:16
  3. zend_form eigener validator
    Von primus im Forum Einsteigerfragen
    Antworten: 3
    Letzter Beitrag: 14.12.2009, 13:59
  4. Eigener Validator, zwei Felder plus externer Wert
    Von timopeschka im Forum Formulare
    Antworten: 2
    Letzter Beitrag: 08.10.2009, 15:27
  5. Eigener Validator mit Zend_Form
    Von mnitsch im Forum Formulare
    Antworten: 15
    Letzter Beitrag: 04.06.2008, 11:58

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •