php - Adapter Db\NoRecordExists Error [Zend 2] -


catchable fatal error: argument 1 passed zend\validator\db\abstractdb::setadapter() must instance of zend\db\adapter\adapter, null given, called in /home2/mapasgua/vendor/zendframework/zendframework/library/zend/validator/abstractvalidator.php on line 142 , defined in /home2/mapasgua/vendor/zendframework/zendframework/library/zend/validator/db/abstractdb.php on line 168

module.php

    <?php  namespace user;  use zend\mvc\mvcevent; use zend\mvc\moduleroutelistener;  use user\model\userstable; use user\model\users;  class module {     public function onbootstrap(mvcevent $e)     {         ini_set('date.timezone', 'america/sao_paulo');          $e->getapplication()->getservicemanager()->get('translator');         $eventmanager        = $e->getapplication()->geteventmanager();         $moduleroutelistener = new moduleroutelistener();         $moduleroutelistener->attach($eventmanager);          $e->getapplication()->geteventmanager()->getsharedmanager()->attach('zend\mvc\controller\abstractactioncontroller', 'dispatch', function($e) {             $controller = $e->gettarget();             $controllerclass = get_class($controller);             $modulenamespace = substr($controllerclass, 0, strpos($controllerclass, '\\'));             $config = $e->getapplication()->getservicemanager()->get('config');             if (isset($config['module_layouts'][$modulenamespace])) {                 $controller->layout($config['module_layouts'][$modulenamespace]);             }         }, 100);     }      public function getautoloaderconfig()     {         return array(             // 'zend\loader\classmapautoloader' => array(             //     __dir__ . '/autoload_classmap.php',             // ),             'zend\loader\standardautoloader' => array(                 'namespaces' => array(                     __namespace__ => __dir__ . '/src/' . __namespace__,                 ),             ),         );     }      public function getserviceconfig()     {         return array(             'factories' => array(                 'user\model\userstable' =>  function($sm) {                     $dbadapter = $sm->get('zend\db\adapter\adapter');                     $table = new userstable($dbadapter);                     return $table;                 },                 'user\model\users' =>  function($sm) {                     $dbadapter = $sm->get('zend\db\adapter\adapter');                     $users = new users();                     $users->setdbadapter($dbadapter);                     return $users;                 },             ),         );     }       public function getconfig()     {         return include __dir__ . '/config/module.config.php';     } } 

users.php

    <?php  namespace user\model;  use zend\inputfilter\inputfilter; use zend\inputfilter\factory inputfactory; use zend\inputfilter\inputfilterinterface; use zend\inputfilter\inputfilterawareinterface; use zend\db\adapter\adapter; use zend\validator\db\abstractdb;  class users implements inputfilterawareinterface {     public $id;     public $name;     public $username;     public $password;      protected $inputfilter;     public $_dbadapter;      public function exchangearray($data)     {         $this->id       = (isset($data['id'])) ? $data['id'] : null;         $this->name     = (isset($data['name'])) ? $data['name'] : null;         $this->username = (isset($data['username'])) ? $data['username'] : null;         $this->password = (isset($data['password'])) ? $data['password'] : null;     }      public function getarraycopy()     {         return get_object_vars($this);     }      public function setinputfilter(inputfilterinterface $inputfilter)     {         throw new \exception("not used");     }      public function setdbadapter($dbadapter)      {         $this->_dbadapter = $dbadapter;     }      public function getdbadapter()      {         return $this->_dbadapter;     }      public function getinputfilter()     {         if (!$this->inputfilter) {             $inputfilter = new inputfilter();             $factory = new inputfactory();              $inputfilter->add($factory->createinput(array(                 'name' => 'id',                 'required' => true,                 'filters' => array(                     array('name' => 'int'),                 ),             )));              $inputfilter->add($factory->createinput(array(                 'name' => 'name',                 'required' => true,                 'filters' => array(                     array('name' => 'striptags'),                     array('name' => 'stringtrim'),                 ),                 'validators' => array(                     array(                         'name' => 'stringlength',                         'options' => array(                             'encoding' => 'utf-8',                             'min' => 3,                             'max' => 32,                         ),                     ),                 ),             )));              $inputfilter->add($factory->createinput(array(                 'name' => 'username',                 'required' => true,                 'filters' => array(                     array('name' => 'striptags'),                     array('name' => 'stringtrim'),                 ),                 'validators' => array(                     array(                         'name' => 'emailaddress',                         'options' => array(                             'encoding' => 'utf-8',                             'min' => 3,                             'max' => 32,                             'message' => 'endereço de e-mail invalido',                         ),                     ),                     array(                         'name'    => 'db\norecordexists',                         'options' => array(                             'table' => 'users',                             'field' => 'username',                             'adapter' => $this->getdbadapter(),                             'exclude' => array(                                 'field' => 'id',                                 'value' => !is_null( $this->id ) && !empty( $this->id ) ? $this->id : 0,                             ),                         ),                     ),                 ),             )));              $inputfilter->add($factory->createinput(array(                 'name' => 'password',                 'required' => true,                 'filters' => array(                     array('name' => 'striptags'),                     array('name' => 'stringtrim'),                 ),                 'validators' => array(                     array(                         'name' => 'stringlength',                         'options' => array(                             'encoding' => 'utf-8',                             'min' => 3,                             'max' => 32,                         ),                     ),                 ),             )));              $inputfilter->add($factory->createinput(array(                 'name' => 'retype-password',                 'required' => true,                 'filters' => array(                     array('name' => 'striptags'),                     array('name' => 'stringtrim'),                 ),                 'validators' => array(                     array(                         'name' => 'stringlength',                         'options' => array(                             'encoding' => 'utf-8',                             'min' => 3,                             'max' => 32,                         ),                     ),                     array(                         'name' => 'identical',                         'options' => array(                             'token' => 'password', //i have tried $_post['password'], doesnt work either                         ),                     ),                 ),             )));              $this->inputfilter = $inputfilter;         }         return $this->inputfilter;     } } 

usercontroller.php

namespace user\controller;

<?php use zend\mvc\controller\abstractactioncontroller; use zend\authentication\authenticationservice; use zend\authentication\adapter\dbtable authadapter; use zend\authentication\result result; use zend\mail; use user\form\loginform; use user\form\registerform; use user\form\recuperarform; use user\model\users;  class usercontroller extends abstractactioncontroller {     protected $userstable;      public function configaction()     {         $auth = new authenticationservice();         $form = new registerform();          $identity = null;         if ($auth->hasidentity()) {             $dados = $this->getuserstable()->getuser($auth->getidentity());             $request = $this->getrequest();             if ($request->ispost()) {                 $users = new users();                 $post = $request->getpost();                  $form->setinputfilter($users->getinputfilter());                 $form->setdata($post);                     if ($form->isvalid()) {                         $users->exchangearray($post);                         $this->getuserstable()->saveusers($users);                          $this->flashmessenger()->addmessage("configurações atualizadas com sucesso.");                         return $this->redirect()->toroute('painel');                     }             } else {                 $post = array(                     'id' => $dados->id,                     'name' => $dados->name,                     'username' => $dados->username,                 );                 $form->setdata($post);             }         } else {             return $this->redirect()->toroute('login');         }          return array(             'form' => $form,         );     } 

your problem have defined factory users don't use it. line $users = new users(); directly instantiates object without using factory.

change to

$users = $this->getservicelocator()->get('user\model\users');

as object relies on zend\db\adapter\adapter need factory inject you.


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -