Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework][ZendFramework2] Zapis do bazy danych. Błąd podczas odwołania getMock
kilaz91
post
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 ?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 21:12