Jak načíst model v classe s dědičností

karel.nev
Člen | 21
+
0
-

Omlouvám se za trošku začátečnický dotaz. Mám classu s dědičností viz níže. Rád bych tam měl model, abych mohl přistupovat k databázi. Když ale použiji konstruktor, hlasí mi to tuto chybu:
Argument 1 passed to CelandarReservation\EventCalendarGenerator::__construct() must be an instance of CelandarReservation\ItemManager, instance of CelandarReservation\EventCellFactory given, called in

Mohli byste mě prosím trošku nakopnout, jak k modelu v této třídě přištupovat? Děkuji.

<?php
namespace CelandarReservation;

use blitzik\Calendar\Entities\ICell;
use blitzik\Calendar\Generator\CalendarGenerator;
use Nette\Database\Table\IRow;
use App\Model\BaseManager;
use Nette\Database\Context;
use Nette\Object;
use Nette\Database\Connection;
use Nette\Database\IStructure;


use Tracy\Debugger;


class EventCalendarGenerator extends CalendarGenerator
{
	private $itemManager;

    public function __construct(
        ItemManager $itemManager
    )
    {
        $this->itemManager = $itemManager;
    }
	.....

?>

Editoval karel.nev (27. 1. 2020 20:04)

Kamil Valenta
Člen | 762
+
0
-

Kde se EventCalendarGenerator vytváří? Je to service v neonu? Jak je tam definovaná?

karel.nev
Člen | 21
+
0
-

EventCalendarGenerator vytvářím v ItemPresenteru , viz kod níže. Jinak item manager je definovaný v neonu takhle:

services
App\CalendarModule\Model\ItemManager
<?php
 protected function createComponentCalendar()
    {
        $cal = new Calendar(Calendar::LANG_CS);

        $cal->setCalendarGenerator(
            new EventCalendarGenerator(
                new EventCellFactory(Calendar::MONDAY)
            )
        );

        $cal->truncateDaysLabelsTo(2);

        $cal->enableSelections();

        $cal->setCalendarBlocksTemplate(__DIR__  . '/../templates/components/Calendar/calendarBlocks.latte');


        return $cal;
    }
?>

Editoval karel.nev (27. 1. 2020 22:58)

CZechBoY
Člen | 3608
+
+1
-

Tak to je celkem jasny. Ty misto ItemManager predavas ItemCellFactory. Je potreba abys dodal spravnou sluzbu.
Pokud i ten EventCalendarGenerator ma byt sluzba (bezstavova, znovupouzitelna) tak ho zaregistruj do polozky services v konfiguraci a instanci si predej do toho presenteru kde mas tuhle createComponent metodu.