Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend Framework 2服务管理器_Php_Zend Framework2 - Fatal编程技术网

Php Zend Framework 2服务管理器

Php Zend Framework 2服务管理器,php,zend-framework2,Php,Zend Framework2,你好,我有个问题,我不确定我的错误在哪里。我创建了一个名为Phonebook的模块,当我想从数据库中获取结果时,会得到一个空白页面 以下是我的代码示例: 控制器: namespace Phonebook\Controller; use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\ViewModel; use Phonebook\Model\Phonebook; class PhonebookContro

你好,我有个问题,我不确定我的错误在哪里。我创建了一个名为Phonebook的模块,当我想从数据库中获取结果时,会得到一个空白页面

以下是我的代码示例:

控制器:

namespace Phonebook\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

use Phonebook\Model\Phonebook;

class PhonebookController extends AbstractActionController
{
    protected $phonebookTable;

    /**
     * Get Model Table
     */

    public function getPhonebookTableGateway()
    {
        if (!$this->phonebookTable){
            $sm = $this->getServiceLocator();
            $this->phonebookTable = $sm->get('Phonebook\Model\PhonebookTable');
        }
        return $this->phonebookTable;
    }


    /**
     * Index Action
     * 
     * @see \Zend\Mvc\Controller\AbstractActionController::indexAction()
     */
    public function indexAction()
    {
        return new ViewModel(array(
            'phonebook' => $this->getPhonebookTableGateway()->fetchAll()
        ));
    }
注意:我没有显示控制器的完整源代码,因为它太大了

Module.php服务管理器

namespace Phonebook;


use Phonebook\Model\Phonebook;
use Phonebook\Model\PhonebookTable;

use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\TableGateway;

    public function getServiceConfig()
    {
        return array(
            'factories' => array(
                'Phonebook\Model\PhonebookTable' =>  function($sm) {
                    $tableGateway = $sm->get('PhonebookTableGateway');
                    $table = new PhonebookTable($tableGateway);
                    return $table;
                },
                'PhonebookTableGateway' => function ($sm) {
                    $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
                    $resultSetPrototype = new ResultSet();
                    $resultSetPrototype->setArrayObjectPrototype(new Phonebook());
                    return new TableGateway('phonebook', $dbAdapter, null, $resultSetPrototype);
                },
            ),
        );
    }
电话预订表

<?php
namespace Phonebook\Model;

// Get Zend Table Gateway

use Zend\Db\TableGateway\TableGateway;


class PhonebookTable
{
    protected $tableGateway; 

    /**
     * Constructor
     * 
     * @return Inject Dependency in TableGateway.
     */
    public function __construct(TableGateway $tableGateway)
    {
        $this->tableGateway = $tableGateway;
    }

    /**
     * Fetch all
     * 
     * Method fetch all article from database
     * 
     * @return resource
     */
    public function fetchAll() 
    {
        $resultSet = $this->tableGateway->select();
        return $resultSet;
    }

}


当我从控制器中删除服务管理器时,页面成功呈现,没有数据库结果。

您需要电话簿表;因此,在控制器中,您应该具有:

$phoneBookTable = $this->getServiceLocator()->get('PhonebookTable');

$allPhonebook=$phoneBookTable->fetchAll();

在您看来,$phonebook->count()的结果是什么?我什么都看不到,只有空白的白页。我在db表
电话簿中有记录。让我检查一下
count
whitout-feching结果。啊,同样没有任何东西不呈现。:/?您确定正在调用它来设置您的SM吗?您的代码看起来应该可以工作。
<tbody>
    <?php foreach ($phonebook as $item) :?>
        <tr> 
            <td> <?php echo $this->escapehtml($item->id);?>
            <td> <?php echo $this->escapehtml($item->firstname);?>
            <td> <?php echo $this->escapehtml($item->lastname);?>
            <td> <?php echo $this->escapehtml($item->phone);?>
            <td> <?php echo $this->escapehtml($item->city);?>
        </tr>   
    <?php endforeach;?>
</tbody>
$phoneBookTable = $this->getServiceLocator()->get('PhonebookTable');

$allPhonebook=$phoneBookTable->fetchAll();