I am new in Zend 2. I have made a controller and Model.
I am getting the following error:
Fatal error: Call to a member function get() on a non-object in C:\websites\zend2\module\Pages\src\Pages\Model\PagesTable.php on line 25
What do i do wrong?!?!
SOLUTION:
controller:
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;
}
}
Model:
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;
}
}
Add 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);
},
),
);
}