编程语言
首页 > 编程语言> > PHP-ZF2,添加多个表

PHP-ZF2,添加多个表

作者:互联网

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

我的问题是添加第二个模块,更复杂的是,它管理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(),
    ));     

}

那我有多好?

解决方法:

您不能多次致电return.发生的情况是,函数的执行通过第一个返回调用终止,而从不调用第二个返回调用.您需要写:

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

这是基本的PHP.因此,我建议在学习ZF之前先学习PHP.即使对于使用纯原始PHP经验丰富的人,ZF也是非常复杂的.对于初学者来说有更好的框架(例如代码点火器,kohana或cakephp)-您应该从那里开始IMO …

标签:zend-framework2,php
来源: https://codeday.me/bug/20191031/1979131.html