![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 3.04.2014 Ostrzeżenie: (0%) ![]() ![]() |
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); } 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); 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; } zmieniając funkcję zapisującą na: Kod public function saveReferer($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 ? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 45 Dołączył: 5.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie pokazałeś najważniejszego. Jak wygląda metoda getMock()?
Bo nie jest to standardowa metoda w Zend 2, a te dwie linijki
Łudząco przypominają metody z testów jednostkowych PHPUnit. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
Kod skopiowany z testów jednostkowych i wklejony wprost do kontrolera. Mistrzostwo PHP (IMG:style_emoticons/default/biggrin.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 12:13 |