私はZend 2の初心者です。コントローラーとモデルを作成しました。
次のエラーが表示されます。
致命的なエラー: 25 行目の C:\websites\zend2\module\Pages\src\Pages\Model\PagesTable.php の非オブジェクトでメンバー関数 get() を呼び出します
私は何を間違っていますか?!?!
解決:
コントローラ:
namespace Pages\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class IndexController extends AbstractActionController {
protected $pagesTable;
function indexAction() {
return new ViewModel(array(
'pages' => $this->getPagesTable()->fetchAll(),
));
}
public function getPagesTable()
{
if (!$this->pagesTable) {
$sm = $this->getServiceLocator();
$this->pagesTable = $sm->get('Pages\Model\PagesTable');
}
return $this->pagesTable;
}
}
モデル:
namespace Pages\Model;
use Zend\Db\TableGateway\TableGateway;
class PagesTable {
protected $tableGateway;
public function __construct(TableGateway $tableGateway)
{
$this->tableGateway = $tableGateway;
}
public function fetchAll()
{
$resultSet = $this->tableGateway->select();
return $resultSet;
}
}
Module.php を追加
public function getServiceConfig()
{
return array(
'factories' => array(
'Pages\Model\PagesTable' => function($sm) {
$tableGateway = $sm->get('PagesTableGateway');
$table = new PagesTable($tableGateway);
return $table;
},
'PagesTableGateway' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
return new TableGateway('pages', $dbAdapter, null, $resultSetPrototype);
},
),
);
}