2016-04-23 12 views
0

Zend FrameWork 2を使用してDBにレコードを挿入する際に問題があります。 フォームを送信するときにDBに保存されたレコードはなく、エラーメッセージも表示されません。私もここで<< Registered Successfully >> は私のコードは、事前に感謝であること:パブリック関数saveUser(米国では、ユーザーは何Zendのフォームからデータベースへの挿入

// App/config/autoload/global.php 
return array(
     'db' => array(
      'driver'   => 'pdo', 
      'dsn'   => 'mysql:dbname=zf_app;host=localhost;port:8080', 
      'username'  => 'zf_user', 
      'password'  => 'zf_pass', 
      'driver_options' => array(
          PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' 
          ), 

        ), 
     'service_manager' => array(
      'factories' => array(
         'Zend\Db\Adapter\Adapter' =>'Zend\Db\Adapter\AdapterServiceFactory', 
         ), 
      ), 
); 

    ################################################################# 

//App\module\Users\src\Users\Model\Usertable.php 

    <?php 

namespace Users\Model; 
use Zend\Db\Adapter\Adapter; 
use Zend\Db\ResultSet\ResultSet; 
use Zend\Db\TableGateway\TableGateway; 

class UserTable 
{ 
protected $tableGateway ; 

public function __construct(TableGateway $tableGateway) 
{ 
    $this->tableGateway = $tableGateway; 
} 

public function saveUser(User $user) 
{ 
    $data = array(
      'email'  => $user->email , 
      'name'  => $user->name, 
      '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("User ID does not Exist "); 

     } 
    } 
} 

public function getUser($id) 
{ 
    $id  = (int)$id; 
    $rowset = $this->tableGateway->select(array('id' => $id)); 
    $row  = $rowset->current(); 

    if(!$row) 
    { 
     throw new \Exception("Could not Find row $id "); 
    } 
    return $row ; 
    } 

} 



    ########################################################## 
    // App\module\Users\src\Users\Controller\RegisterController.php 

    <?php 

namespace Users\Controller; 
use Zend\Mvc\Controller\AbstractActionController; 
use Zend\View\Model\ViewModel; 
use Users\Form\RegisterForm; 
use Users\Form\RegisterFilter; 
use Zend\Db\Adapter\Adapter; 


class RegisterController extends AbstractActionController 
{ 
    public function indexAction() 
    { 
     $form  = new RegisterForm(); 
     $viewModel = new ViewModel(array('form' => $form)); 
     return $viewModel; 
    } 


    public function confirmAction() 
    { 
     $viewModel = new ViewModel(); 
     return $viewModel; 
    } 


    public function processAction() 
    { 
     if(!$this->request->isPost()) 
     { 
      return $this->redirect()->toRoute(NULL , array(
                 'controller' => 'register', 
                'action'  => 'index', 
                )); 
     } 

     $post = $this->request->getPost(); 
     $form = new RegisterForm(); 
     $inputFilter = new RegisterFilter(); 
     $form->setInputFilter($inputFilter); 
     $form->setData($post); 

     if (!$form->isValid()) 
     { 
      $model = new ViewModel(array('error' => true , 'form' => $form)); 
      $model->setTemplate('users/register/index'); 
      return $model; 
     } 

     return $this->redirect()->toRoute(NULL , array('controller' => 'register' , 'action' => 'confirm' ,)); 

    } 


    public 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); 
     $this->createUser($form->getData()); 
     return true; 
    } 



} 

答えて

0
Create // App/config/autoload/local.php 

// App/config/autoload/local.php 

return array(
    'db' => array(
     'username' => "zf_user", 
     'password' => "zf_pass", 
    ) 
); 

とglobal.php

から
+0

まずはお手数ですが、残念ながら私はそれを試みましたが、動作しません –

0

をユーザ名とパスワードを削除er $ user)?ユーザーファイルは使用していません。

+0

'public function saveUser()'の代わりに 'public function createUser(array $ data)'を使用しています 配列としてデータを受け取り、次にそれらをdb ....に渡します。その内部に私はユーザーファイル を使用しています。チェックする場合はコードを投稿に追加します –

+0

ZfcUser \ Entity \ App \ module \ Users \ src \ Users \ Model \ Usertable.phpのユーザー – nuwan

関連する問題