2016-09-04 18 views
0

crud操作を作成する際に新たな問題が発生しました。私は、Albumモジュールと同様のprovinceモジュールを持っています。ここでは、省を削除して更新するように新しい省を追加したいと考えています。私はアルバムからのコードをコピーし、すべてがOKですが、それはエラーを示しています。zf2のModule.phpにクラスが見つかりません

Fatal error: Uncaught Error: Class 'Admin\Provinces' not found in C:\xampp\htdocs\new_project\module\Admin\Module.php:61 Stack trace: #0 [internal function]: Admin\Module->Admin{closure} (Object(Zend\ServiceManager\ServiceManager), 'provincestableg...', 'ProvincesTableG...') #1 C:\xampp\htdocs\new_project\vendor\zendframework\zend-servicemanager\src\ServiceManager.php(939): call_user_func(Object(Closure), Object(Zend\ServiceManager\ServiceManager), 'provincestableg...', 'ProvincesTableG...') #2 C:\xampp\htdocs\new_project\vendor\zendframework\zend-servicemanager\src\ServiceManager.php(1099): Zend\ServiceManager\ServiceManager->createServiceViaCallback(Object(Closure), 'provincestableg...', 'ProvincesTableG...') #3 C:\xampp\htdocs\new_project\vendor\zendframework\zend-servicemanager\src\ServiceManager.php(638): Zend\ServiceManager\ServiceManager->createFromFactory('provincestableg...', 'ProvincesTableG...') #4 C:\xampp\htdocs\new_project\vendor\zendframework\zend-servicemanager\src\ServiceManager.php(598): Zend\ServiceMana in C:\xampp\htdocs\new_project\module\Admin\Module.php on line 61

Module.php:

<?php 

namespace Admin; 

use Admin\Model\Profile; 
use Admin\Model\ProfileTable; 
use Zend\Db\ResultSet\ResultSet; 
use Zend\Db\TableGateway\TableGateway; 

use Zend\Mvc\ModuleRouteListener; 
use Zend\Mvc\MvcEvent; 

class Module 
{ 

public function getConfig() 
{ 
    return include __DIR__ . '/config/module.config.php'; 
} 

public function getServiceConfig() 
{ 
    return array(
     'factories' => array( 
      'Admin\Model\ProfileTable' => function($sm) { 
       $tableGateway = $sm->get('ProfileTableGateway'); 
       $table = new ProfileTable($tableGateway); 
       return $table; 
      }, 

      'ProfileTableGateway' => function ($sm) { 
       $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter'); 
       $resultSetPrototype = new ResultSet(); 
       $resultSetPrototype->setArrayObjectPrototype(new Profile()); 
       return new TableGateway('user', $dbAdapter, null, $resultSetPrototype);   
      }, 
'Admin\Model\ProvincesTable' => function($sm) { 
       $tableGateway = $sm->get('ProvincesTableGateway'); 
       $table = new ProvincesTable($tableGateway); 
       return $table; 
      }, 
      'ProvincesTableGateway' => function ($sm) { 
       $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter'); 
       $resultSetPrototype = new ResultSet(); 
       $resultSetPrototype->setArrayObjectPrototype(new Provinces()); 
       return new TableGateway('provinces', $dbAdapter, null, $resultSetPrototype); 
      },  
     ), 
    ); 
} 

public function getAutoloaderConfig() 
{ 
    return array(
     'Zend\Loader\StandardAutoloader' => array(
      'namespaces' => array(
       __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, 
      ), 
     ), 
    ); 
} 
} 

ProvincesController.php:

<?php 

namespace Admin\Controller; 

use Zend\Mvc\Controller\AbstractActionController; 
use Zend\View\Model\ViewModel; 

use Admin\Model\Provinces;   
use Admin\Form\ProvincesForm; 

class ProvincesController extends AbstractActionController 
{ 

protected $provincesTable;  
public function getAuthService() 
{ 
    $this->authservice = $this->getServiceLocator()->get('AuthService'); 
    return $this->authservice; 
} 

public function indexAction() 
{ 
    $this->layout("layout/layout_admin"); 

    // below condition is new and for back browser validation 
    if (!$this->getServiceLocator() 
      ->get('AuthService')->hasIdentity()) { 
     return $this->plugin(redirect)->toRoute('login', array('action' => 'index')); 
    } 

    return new ViewModel(array(
    'pk_provinces' => $this->getProvincesTable()->fetchAll(), 
    )); 

} 

public function addAction() 
{ 
    $form = new ProvincesForm(); 
    $form->get('submit')->setValue('Add'); 

    $request = $this->getRequest(); 
    if ($request->isPost()) { 
     $provinces = new Provinces(); 
     $form->setInputFilter($provinces->getInputFilter()); 
     $form->setData($request->getPost()); 

     if ($form->isValid()) { 
      $provinces->exchangeArray($form->getData()); 
      $this->getProvincesTable()->saveProvinces($provinces); 

      // Redirect to list of albums 
      return $this->redirect()->toRoute('provinces'); 
     } 
    } 
    return array('form' => $form); 
} 

public function editAction() 
{ 
    $id = (int) $this->params()->fromRoute('id', 0); 
    if (!$id) { 
     return $this->redirect()->toRoute('provinces', array(
      'action' => 'add' 
     )); 
    } 

    // Get the Album with the specified id. An exception is thrown 
    // if it cannot be found, in which case go to the index page. 
    try { 
     $provinces = $this->getProvincesTable()->getProvinces($id); 
    } 
    catch (\Exception $ex) { 
     return $this->redirect()->toRoute('provinces', array(
      'action' => 'index' 
     )); 
    } 

    $form = new ProvincesForm(); 
    $form->bind($provinces); 
    $form->get('submit')->setAttribute('value', 'Edit'); 

    $request = $this->getRequest(); 
    if ($request->isPost()) { 
     $form->setInputFilter($provinces->getInputFilter()); 
     $form->setData($request->getPost()); 

     if ($form->isValid()) { 
      $this->getProvincesTable()->saveProvinces($provinces); 

      // Redirect to list of albums 
      return $this->redirect()->toRoute('provinces'); 
     } 
    } 

    return array(
     'id' => $id, 
     'form' => $form, 
    ); 
} 

public function deleteAction() 
{ 
    $id = (int) $this->params()->fromRoute('id', 0); 
    if (!$id) { 
     return $this->redirect()->toRoute('provinces'); 
    } 

    $request = $this->getRequest(); 
    if ($request->isPost()) { 
     $del = $request->getPost('del', 'No'); 

     if ($del == 'Yes') { 
      $id = (int) $request->getPost('id'); 
      $this->getProvincesTable()->deleteProvinces($id); 
     } 

     // Redirect to list of albums 
     return $this->redirect()->toRoute('provinces'); 
    } 

    return array(
     'id' => $id, 
     'provinces' => $this->getProvincesTable()->getProvinces($id) 
    ); 
} 

public function getProvincesTable() 
{ 
    if (!$this->provincesTable) { 
     $sm = $this->getServiceLocator(); 
     $this->provincesTable = $sm->get('Admin\Model\ProvincesTable'); 
    } 
    return $this->provincesTable; 
} 
} 

ProvincesForm.phpを:

<?php 

namespace Admin\Form;  
use Zend\Form\Form; 

class ProvincesForm extends Form 
{ 
    public function __construct($name = null) 
    { 
     // we want to ignore the name passed 
     parent::__construct('provinces'); 

    $this->add(array(
     'name' => 'id', 
     'type' => 'Hidden', 
    )); 
    $this->add(array(
     'name' => 'p_name', 
     'type' => 'Text', 
     'options' => array(
      'label' => 'Province', 
     ), 
    )); 
    $this->add(array(
     'name' => 'submit', 
     'type' => 'Submit', 
     'attributes' => array(
      'value' => 'Go', 
      'id' => 'submitbutton', 
     ), 
    )); 
} 
} 

モデル/ Provinces.php:

<?php 

namespace Admin\Model; 

use Zend\InputFilter\InputFilter; 
use Zend\InputFilter\InputFilterAwareInterface; 
use Zend\InputFilter\InputFilterInterface; 

class Provinces implements InputFilterAwareInterface 
{ 
    public $id; 
    public $p_name; 

protected $inputFilter; 

public function exchangeArray($data) 
{ 
    $this->id  = (!empty($data['id'])) ? $data['id'] : null; 
    $this->p_name = (!empty($data['p_name'])) ? $data['p_name'] : null; 
} 

public function getArrayCopy() 
{ 
    return get_object_vars($this); 
} 

public function setInputFilter(InputFilterInterface $inputFilter) 
{ 
    throw new \Exception("Not used"); 
} 

public function getInputFilter() 
{ 
    if (!$this->inputFilter) { 
     $inputFilter = new InputFilter(); 

     $inputFilter->add(array(
      'name'  => 'id', 
      'required' => true, 
      'filters' => array(
       array('name' => 'Int'), 
      ), 
     )); 

     $inputFilter->add(array(
      'name'  => 'p_name', 
      'required' => true, 
      'filters' => array(
       array('name' => 'StripTags'), 
       array('name' => 'StringTrim'), 
      ), 
      'validators' => array(
       array(
        'name' => 'StringLength', 
        'options' => array(
         'encoding' => 'UTF-8', 
         'min'  => 1, 
         'max'  => 100, 
        ), 
       ), 
      ), 
     )); 

     $this->inputFilter = $inputFilter; 
    } 
    return $this->inputFilter; 
} 
} 

モデル/ ProvincesTable.php:

<?php 

namespace Admin\Model;  
use Zend\Db\TableGateway\TableGateway; 

class ProvincesTable 
{ 
protected $tableGateway; 

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

public function fetchAll() 
{ 
    $resultSet = $this->tableGateway->select(); 
    return $resultSet; 
} 

public function getProvinces($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; 
} 

public function saveProvinces(Provinces $provinces) 
{ 
    $data = array(
     'p_name' => $provinces->p_name, 
    ); 

    $id = (int) $provinces->id; 
    if ($id == 0) { 
     $this->tableGateway->insert($data); 
    } else { 
     if ($this->getProvinces($id)) { 
      $this->tableGateway->update($data, array('id' => $id)); 
     } else { 
      throw new \Exception('Province id does not exist'); 
     } 
    } 
} 

public function deleteProvinces($id) 
{ 
    $this->tableGateway->delete(array('id' => (int) $id)); 
} 
} 

答えて

0

あなたModule.php

+0

use Admin\Model\Provinceを追加おかげでたくさん、あなたの先生ありがとうございました。 – Skylink

関連する問題