Zend framework2 未找到zend framework 2用户类
我正在为插入用户信息抛出表单开发一个ZF2类。我有一个用户类,UserTable类,并且对我的控制器做了一些更改Zend framework2 未找到zend framework 2用户类,zend-framework2,Zend Framework2,我正在为插入用户信息抛出表单开发一个ZF2类。我有一个用户类,UserTable类,并且对我的控制器做了一些更改 ***User.php*** <?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template i
***User.php***
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
namespace Users\Model;
/**
* Description of User
*
* @author mlorente
*/
class User {
public $id;
public $name;
public $email;
public $password;
public function setPassword($clear_password) {
$this->password = md5($clear_password);
}
function exchangeArray($data){
$this->name = (isset($data['name']))?$data['name']:null;
$this->password = (isset($data['email']))?$data['email']:null;
if (isset($data['password'])){
$this->setPassword($data['password']);
}
}
}
Las代码是控制器的一部分。当我测试应用程序时,它提到了这个错误
致命错误:在C:\Program中找不到类“Users\Controller\User”
Files\EasyPHP-DevServer-14.1VC11\data\localweb\ZF2\u TUTORIAL1\module\Users\src\Users\Controller\RegisterController.php
第74行
我在找这条线,但我不知道怎么修。我认为这比看起来更简单。因为您(大概)在调用new User()时在控制器类的顶部声明了名称空间Users\Controller
PHP认为您的意思是new\Users\Controller\User()
,它不存在(因此出现错误)。要解决此问题,请将用户模型导入当前范围。您也需要对UserTable
执行同样的操作,否则您将遇到同样的问题
将这两行添加到控制器类的顶部(在名称空间声明之后):
那么它应该会起作用
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
namespace Users\Model;
use Zend\Db\Adapter\Adapter;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\TableGateway;
/**
* Description of userTable
*
* @author mlorente
*/
class UserTable {
protected $tableGateway;
function __construct(TableGateway $tableGateway) {
$this->tableGateway = $tableGateway;
}
public function saveUser(User $user){
$data = array(
'name' => $user->name,
'email' => $user->email,
'password' => $user->password,
);
$id = (int)$user->id;
if($id == 0){
$this->tableGateway->insert($data);
}else{
if($this->getUser($id)){
$this->tableGateway->update($data, array('id' => $id));
}else{
throw new Exception('El ID de usuario no existe');
}
}
}
public function getUser ($id){
$id = (int)$id;
$rowset = $this->tableGateway->select(array('id' => $id));
$row = $rowset->current();
if (!$row){
throw new Exception('No se ha encontrado la fila con ID '.$id);
}
return $row;
}
}
public function processAction(){
$form = new RegisterForm();
$form->get('submit')->setValue('Enviar');
$request = $this->getRequest();
if(!$request->isPost()){
return $this->redirect()->toRoute(NULL,
array('controller' => 'register',
'action' => 'index'));
}
$registro = new Register();
$form->setInputFilter($registro->getInputFilter());
$form->setData($request->getPost());
if($form->isValid()){
$registro->exchangeArray($form->getData());
$this->createUser($form->getData());
return $this->redirect()->toRoute(NULL, array('controller' => 'register','action' => 'confirm'));
}else{
$model = new ViewModel(array(
'error' => true,
'form' => $form,
));
$model->setTemplate('users/register/index');
return $model;
}
return array('form' => $form);
}
protected function createUser(array $data){
$sm = $this->getServiceLocator();
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new \Zend\Db\ResultSet\ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new \Users\Model\User);
$tableGateway = new \Zend\Db\TableGateway\TableGateway('user', $dbAdapter, null, $resultSetPrototype);
$user = new User();
$user->exchangeArray($data);
$userTable = new UserTable($tableGateway);
$userTable->saveUser($user);
return true;
}
use Users\Model\User;
use Users\Model\UserTable;