Php Zend Framework 2服务管理器
你好,我有个问题,我不确定我的错误在哪里。我创建了一个名为Phonebook的模块,当我想从数据库中获取结果时,会得到一个空白页面 以下是我的代码示例: 控制器: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
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();