ZF2,添加多个表

时间:2012-09-16 20:54:26

标签: php zend-framework2

我已经按照为新的ZF2教程创建的Album示例。对于第一个模块,它都运行良好,我能够修改以显示我想用于我的应用程序的数据。

我的问题是添加第二个模块,而且更复杂的是,它管理着2个以上的数据表。每次我去页面,我都会得到Apache错误页面,这对我们没什么帮助。我修改的唯一主要类是Module.php int第二个模块的目录。也许有人可以看出我的猜测有多么错误。

模块背景:该视图将显示4种类型的表,其中包括Fosters和Volunteers。我为每个人创建了一个模型和表。一切似乎都很不错,除了我修改了工厂设置以包含每个表(FosterTable和VolTable)。你认为这是我的错误吗?

我在此页面上工作:http://framework.zend.com/manual/2.0/en/user-guide/database-and-models.html

对于/TeamMgr/Module.php,我添加了以下内容:

namespace TeamMgr;

use TeamMgr\Model\FosterTable;
use TeamMgr\Model\VolTable;

class Module
{
 public function getServiceConfig()
    {
        return array(
            'factories' => array(
                'TeamMgr\Model\VolTable' =>  function($sm) {
                    $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
                    $table     = new VolTable($dbAdapter);
                    return $table;
                },

                'TeamMgr\Model\FosterTable' =>  function($sm) {
                    $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
                    $table     = new FosterTable($dbAdapter);
                    return $table;
                },
            ),
        );
    }

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

然后在我的控制器中我添加了:

public function indexAction(){
    return new ViewModel(array(
            'fosters'=>$this->getFosterTable()->fetchAll(),
    ));
    return new ViewModel(array(
            'vols'=>$this->getVolTable()->fetchAll(),
    ));     

}

那么我完全离开了吗?

1 个答案:

答案 0 :(得分:4)

您不能多次拨打return。发生的事情是,函数的执行在第一次return调用时终止,第二次调用从未被调用。你需要写:

return new ViewModel(array(
        'fosters'=>$this->getFosterTable()->fetchAll(),
        'vols'=>$this->getVolTable()->fetchAll(),
));

这是基本的PHP。所以我建议在学习ZF之前先学习PHP。 ZF非常复杂,即使对于普通的普通PHP游戏的人也是如此。有更好的初学者框架(如代码点火器,kohana或cakephp) - 你应该从那里开始IMO ......