こんにちは、問題があり、どこが間違っているのかわかりません。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;
    }
}
電話帳
<?php
namespace Phonebook\Model;
class Phonebook
{
    /**
     * Item ID
     * @var int
     */
    public $id;
    /**
     * First Name
     * @var str
     */
    public $firstname;
    /**
     * Last Name
     * @var str
     */
    public $lastname;
    /**
     * Phone
     * @var Str
     */
    public $phone;
    /**
     * City
     * @var str
     */
    public $city;
    /**
     * Exchange Data
     * 
     * @return array
     */
    public function exchangeArray($data)
    {
        $this->id = (!empty($data['id'])) ? $data['id'] : null;
        $this->first_name = (!empty($data['first_name'])) ? $data['first_name'] : null;
        $this->last_name = (!empty($data['last_name'])) ? $data['last_name']: null;
        $this->phone = (!empty($data['phone'])) ? $data['phone'] : null;
        $this->city = (!empty($data['city'])) ? $data['city'] : null;
    }
}
意見
<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>
コントローラーからサービス マネージャーを削除すると、ページはデータベースの結果なしで正常にレンダリングされます。