Použití databáze v modelech

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
pe.havel
Člen | 14
+
0
-

Ahoj,

v třídě basePresenter mám v konstruktoru získávání databáze, abych se všech presenterech měl přístup k databázi. To funguje. Nyní bych chtěl totéž i v modelech (se kterými začínám). Ve třídě Funkce, ze které budou všechny modely dědit jsem udělal totéž, co v basePresenter:

<?php
namespace App\Model;

use Nette;


class Funkce extends Nette\Object {
	/** @var Nette\Database\Context */
    protected $db;

    public function __construct(Nette\Database\Context $database)
    {
        $this->db = $database;
    }

}

Ale laděnka vyhazuje:
Argument 1 passed to App\Model\Funkce::__construct() must be an instance of Nette\Database\Context, none given, called in /app/MainModule/presenters/BasePresenter.php on line 23 and defined

Kde je problém? (Předpokládám, že se při vytváření objektu argument databáze vyplní sám, jako to fungovalo v BasePresenteru)
Procházel jsem různý diskuze, ale nikde jsem nepochodil.

Díky

echo
Člen | 134
+
0
-

Zdravím. Takhle nelze poradit, vlož sem BasePresenter.

voda
Člen | 561
+
+4
-

Zaregistruj si svůj model jako službu a v presenteru vyžaduj model v konstruktoru.

pe.havel
Člen | 14
+
0
-

BasePresenter vypadá takto (tam db bez problému chodí):

<?php

namespace App\MainModule;

use Nette,
	App\Model\VSFunkce;


/**
 * Base presenter for all application presenters.
 */
class BasePresenter extends Nette\Application\UI\Presenter
{
	/** @var Nette\Database\Context */
    protected $db;
    protected $vs;

    public function __construct(Nette\Database\Context $database)
    {
        $this->db = $database;

		$this->vs = new VSFunkce;
    }

}
James_Scott
Člen | 55
+
0
-
  • BasePresenter – v konstruktoru si vyzadej instanci tridy Funkce
  • Funkce – pokud slouzi stejne jako BasePresenter, tudiz aby od ni ostatni modely dedily, tak bych ji zapsal jako abstract.
  • config.neon – zaregistruj si tridu Funkce jako sluzbu, jak psal Voda
pe.havel
Člen | 14
+
0
-

Díky,
nějak jsem to nakonec rozchodil (přes služby v config + $this->context), ač pořádně nevím jak. Ještě pořádně nechápu základní fungování frameworku, tak se není čemu divit :D

Azathoth
Člen | 495
+
0
-

@pe.havel pridal jsi tridu Funkce do config.neon do services?