3

我遵循了为新 ZF2 教程创建的专辑示例。对于第一个模块,一切都很好,我能够修改以显示我想用于我的应用程序的数据。

我的问题是添加第二个模块,更复杂的是,它管理 2 个以上的数据表。每次我访问该页面时,我都会收到 Apache 错误页面,这不是很有帮助。我修改的唯一主要类是第二个模块目录中的 Module.php。也许有人可以看出我的猜测有多么错误。

模块背景:该视图将显示 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(),
    ));     

}

那么我到底有多彻底?

4

1 回答 1

4

你不能return多次打电话。发生的事情是函数的执行在第一次return调用时终止,而第二次调用则永远不会被调用。你需要写:

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

这是基本的PHP。所以我建议先学习PHP,然后再学习ZF。即使对于熟悉普通 PHP 的人来说,ZF 也非常复杂。对于初学者来说有更好的框架(比如代码点火器、kohana 或 cakephp)——你应该从那里开始 IMO...

于 2012-09-16T22:13:58.493 回答