簡體   English   中英

如果我有兩個標簽,如何使用不同的控制器在不同的視圖中顯示數據,如何配置module.php

[英]How to configure module.php if I have two tablse and display data in different views using different controllers

如何配置module.php? 我試圖使用不同的控制器從具有2個不同視圖的兩個表中獲取數據。 下面是我的代碼,向您顯示我在模塊,業務控制器和注冊控制器中正在做什么。

Module.php

public function getServiceConfig(){
    return array(
        'factories' => array(
            // Instantiating StudentTable class by injecting TableGateway
            'TaskForce\Model\RegistrationTable'=>function($sm){
                $registerationGateway = $sm->get('RegistrationTableGateway');
                $table = new RegistrationTable($registerationGateway);
                return $table;
            },
            //Instantiating TableGateway to inject to StudentTable class
            'RegistrationTableGateway'=>function($sm){
                $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
                $resultSetPrototype = new ResultSet();
                $resultSetPrototype->setArrayObjectPrototype(new Registration());
                return new TableGateway('users', $dbAdapter,null,$resultSetPrototype);
            },
            'TaskForce\Model\BusinessTable'=>function($sm){
                $businessGateway = $sm->get('BusinessTableGateway');
                $businesstable = new BusinessTable($businessGateway);
                return $businesstable;
            },
            //Instantiating TableGateway to inject to StudentTable class
            'BusinessTableGateway'=>function($sm){
                $dbAdapter2 = $sm->get('Zend\Db\Adapter\Adapter');
                $resultSetPrototype2 = new ResultSet();
                $resultSetPrototype2->setArrayObjectPrototype(new Business());
                return new TableGateway('business', $dbAdapter2,null,$resultSetPrototype2);
            },
        )
    );
}

BusinessController.php

public function indexAction(){
    // Setting layout for this action
    $this->layout("layout/main_layout");
    return new ViewModel(array(
        // Fetching data from database
        'business'=>$this->getBusinessTable()->fetchAll()
    ));
}

和RegistrationController.php

public function indexAction(){
    // Setting layout for this action
    $this->layout("layout/main_layout");

    $form = new RegistrationForm();

    $request = $this->getRequest();

    if ($request->isPost()) {

        $registration = new Registration();

        //$form->get('submit')->setAttribute('value', 'Add New User');

        $post = array_merge_recursive(
            $request->getPost()->toArray(),
            $request->getFiles()->toArray()
        );
        $form->setData($post);

        if ($form->isValid()) {

            $registration->exchangeArray($form->getData());

            $this->getRegistrationTable()->saveRegistration($registration);

            // Redirect to list of users

            return $this->redirect()->toRoute('registration');
        }
    }

    return new ViewModel(array(
        'form' => $form
    ));
}

如果企業與注冊記錄之間存在關聯,則可能需要澄清。 但是,如果僅僅是代碼安排的問題,則可以執行以下操作:

BusinessController.php

public function indexAction(){
    // Setting layout for this action
    $this->layout("layout/main_layout");
    return new ViewModel(array(
        // Fetching data from database
        'business'=>$this->getBusinessTable()->fetchAll(),
        'registration' => $this->getRegistrationTable()->fetchAll(),
    ));
}

RegistrationController.php

public function indexAction(){
    // Setting layout for this action
    $this->layout("layout/main_layout");
    return new ViewModel(array(
        // Fetching data from database
        'business'=>$this->getBusinessTable()->fetchAll(),
        'registration' => $this->getRegistrationTable()->fetchAll(),
    ));
}

// rename your index action in registrationcontroller.php to form 
// so that the form is displayed on the formAction
public function formAction(){
    // Setting layout for this action
    $this->layout("layout/main_layout");

    $form = new RegistrationForm();

    $request = $this->getRequest();

    if ($request->isPost()) {
        $registration = new Registration();
        //$form->get('submit')->setAttribute('value', 'Add New User');

        $post = array_merge_recursive(
            $request->getPost()->toArray(),
            $request->getFiles()->toArray()
        );
        $form->setData($post);

        if ($form->isValid()) {
            $registration->exchangeArray($form->getData());
            $this->getRegistrationTable()->saveRegistration($registration);

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

    return new ViewModel(array(
        'form' => $form
    ));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM