2013-02-07 132 views
0

Im新的zf2和即時嘗試覆蓋zfcuseradmin/useradmincontroller 但它不工作。我已經嘗試了很多東西,但無法啓動它 這也是我在這裏的第一篇文章,所以如果它在任何方面都不正確,請原諒我。覆蓋zfcuseradmin控制器

我創建了一個名爲MyZfcUserAdmin 我還使用bjuauthorize模塊文件夾中的文件夾,但不知道如果多數民衆贊成重要的是要知道你們。 的引導工作,因爲formfileds添加到我的zfcuseradmin創建表單

這裏是我的代碼:

模塊/ MyzfcUserAdmin /配置/ module.config.php

return array( 
'controllers' => array(
    'invokables' => array(
     'MyZfcUserAdmin' => 'MyZfcUserAdmin\Controller\MyZfcUserAdminController', 
    ), 
), 

); 

模塊/ MyzfcUserAdmin /src/MyzfcUserAdmin/Controller/MyZfcUserAdminController.php

<?php 
namespace MyZfcUserAdmin\Controller; 

use ZfcUserAdmin\Controller\UserAdminController as BaseUserAdminController; 

class MyZfcUserAdminController extends BaseUserAdminController 
{ 

public function createAction() 
{ 
    $result = parent::createAction(); 
    $form = $this->getServiceLocator()->get('zfcuseradmin_createuser_form');   
    $request = $this->getRequest(); 

    $service = $this->getAdminUserService(); 

    $messages = array(); 
    if ($request->isPost()) 
    { 

     $data = $request->getPost()->toArray(); 
     $data['governance'] = 1; 


     if ($service->createasd($data)) 
     { 
      $messages[] = array(
       'type' => 'success', 
       'icon' => 'icon-ok-sign', 
       'message' => 'succes', 
      ); 
      return $this->redirect()->toRoute('zfcadmin/zfcuseradmin/list'); 
     } 
     else 
     { 
      $messages[] = array(
       'type' => 'error', 
       'icon' => 'icon-remove-sign', 
       'message' => 'failed', 
      ); 

     } 
    } 

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

模塊/ MyzfcUserAdmin/Module.php

<?php 

namespace MyZfcUserAdmin; 


use BjyAuthorize\Provider\Role\ZendDb AS rolesDb; 

class Module 
{ 
    public $rights = array(); 
    public $governance = array(); 

    public function onBootstrap($e) 
    { 

     //get roles 
     $serviceManager = $e->getTarget()->getServiceManager(); 
     $rolesdb = new rolesDb('', $serviceManager); 

     $roles = $rolesdb->getRoles(); 
     $roleOptions = array(''); 
     foreach($roles AS $role) 
     { 
      $name = $role->getRoleId(); 
      if($name != 'guest') 
       $roleOptions[$name] = ucfirst($name); 
     } 
     $this->rights = array(
       'name' => 'role', 
       'type' => 'Zend\Form\Element\Select',  
       'attributes' => array(
         'required' => 'required', 
       ), 
       'options' => array(
         'label' => 'Rights', 
         'value_options' => $roleOptions, 
       ) 
      ); 

     $this->governance = array(
       'name' => 'governance', 
       'options' => array(
         'label' => 'Governance', 
         'checkedValue' => 1, 
         'uncheckedValue' => 0, 
       ), 
       'attributes' => array(
         'type' => 'checkbox', 
       ), 
      ); 


     $app = $e->getParam('application'); 
     $em = $app->getEventManager()->getSharedManager(); 
     $em->attach('ZfcUserAdmin\Form\CreateUser', 'init', function($e) { 
      $form = $e->getTarget(); 
      //$form->add($this->rights); 
      $form->add($this->governance);   

     }); 
     $em->attach('ZfcUserAdmin\Form\EditUser', 'init', function($e) { 
      $form = $e->getTarget(); 
      // $form->add($this->rights); 
      $form->add($this->governance); 
     }); 
     $em->attach('ZfcUserAdmin\Form\EditUserFilter','init', function($e) { 
      $filter = $e->getTarget(); 
      // Do what you please with the filter instance ($filter) 

     }); 

    } 




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

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


} 

回答

1

你可以只覆蓋在module.config.php

路線與路線定義裏面默認的控制器更換控制器。

.... 
'zfcuser' => array(
      'type' => 'Literal', 
      'priority' => 1000, 
      'options' => array(
       'route' => '/user', 
       'defaults' => array(
        'controller' => 'myzfcuser', 
        //'controller' => 'zfcuser', 
        'action'  => 'index', 
       ), 
      ), 

還檢查了zfcuser.global.php配置,有路線選擇在那裏,你可以修改

/** 
* Login Redirect Route 
* 
* Upon successful login the user will be redirected to the entered route 
* 
* Default value: 'zfcuser' 
* Accepted values: A valid route name within your application 
* 
*/ 
//'login_redirect_route' => 'zfcuser', 

/** 
* Logout Redirect Route 
* 
* Upon logging out the user will be redirected to the enterd route 
* 
* Default value: 'zfcuser/login' 
* Accepted values: A valid route name within your application 
*/ 
//'logout_redirect_route' => 'zfcuser/login',