Witam, mam pytanie dotyczące błędu.
gdy chcę dodać do bazy danych wpis poprzez funkcję:
Kod
public function saveNewReferer($refererData)
{
$referer = new Referer();
$referer->exchangeArray($refererData);
$mockTableGateway = $this->getMock('Zend\Db\TableGateway\TableGateway', array('insert'), array(), '', false);
$mockTableGateway->expects($this->once())->method('insert')->with($refererData);
$refererTable = new RefererTable($mockTableGateway);
$refererTable->saveReferer($referer);
}
{
$referer = new Referer();
$referer->exchangeArray($refererData);
$mockTableGateway = $this->getMock('Zend\Db\TableGateway\TableGateway', array('insert'), array(), '', false);
$mockTableGateway->expects($this->once())->method('insert')->with($refererData);
$refererTable = new RefererTable($mockTableGateway);
$refererTable->saveReferer($referer);
}
przez
Kod
$this->saveNewReferer(array('name'=>'name','phone'=>'1234','adres'=>'asdssss'));
(przyjmuje tablice)
aplikacja pada z komunikatem:
Cytat
Zend\Mvc\Controller\PluginManager::get was unable to fetch or create an instance for getMock
w pliku Cytat
/var/www/capselZend/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:518
komentując linijkami, pada na
Kod
$mockTableGateway = $this->getMock('Zend\Db\TableGateway\TableGateway', array('insert'), array(), '', false);
w klasie referer używam:
Kod
namespace Referer\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Http\Header\SetCookie;
use Referer\Form\RefererForm;
use Zend\Db\TableGateway\TableGateway;
use Referer\Model\Referer;
use Referer\Model\RefererTable;
początek funkcji zapisującej wygląda tak:
public function saveReferer(Referer $referer)
{
$data = array(
'name' => $referer->name,
'phone' => $referer->phone,
'adres' => $referer->adres,
);
...
$this->tableGateway->insert($referer);
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Http\Header\SetCookie;
use Referer\Form\RefererForm;
use Zend\Db\TableGateway\TableGateway;
use Referer\Model\Referer;
use Referer\Model\RefererTable;
początek funkcji zapisującej wygląda tak:
public function saveReferer(Referer $referer)
{
$data = array(
'name' => $referer->name,
'phone' => $referer->phone,
'adres' => $referer->adres,
);
...
$this->tableGateway->insert($referer);
ale gdy wprowadzam w identycznej postaci dane czyli tablica:
w sposób
Kod
$ref=$this->getRefererTable()->saveReferer(array('name'=>'name','phone'=>'1234','adres'=>'asdssss'));
do funkcji
Kod
public function getRefererTable()
{
if (!$this->refererTable) {
$sm = $this->getServiceLocator();
$this->refererTable = $sm->get('Referer\Model\RefererTable');
}
return $this->refererTable;
}
{
if (!$this->refererTable) {
$sm = $this->getServiceLocator();
$this->refererTable = $sm->get('Referer\Model\RefererTable');
}
return $this->refererTable;
}
zmieniając funkcję zapisującą na:
Kod
public function saveReferer($referer)
{
...
$this->tableGateway->insert($referer);
{
...
$this->tableGateway->insert($referer);
to wtedy ładnie zapisuje do bazy danych..
czy ktoś wie może jak to rozwiązać ?
I jaką będę miał różnicę jak zastosuje nieszablonowy sposób zapisu danych czyli drugi przykład?
Zrobię duży błąd ?