Připojení modelu do komponenty

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

Ahoj, chci si zkusit vytvořit komponentů a potřeboval bych se v ní připojit k modelu abych mohl pracovat s databazí. V presenteru i model injectnu pomoci:

/**
* @var \App\Model\model
* @inject
*/
public $model;

Ale v komponentě si takto injectnou model nemůžu. Poradil by mi někdo jak na to prosím?

trejjam
Backer | 65
+
0
-

pomocí konstruktoru, tj.

private $model;

function __construct(\App\Model\model $model) {
	$this->model=$model;
}

případně v neonu zapnout inject, potom fungují inject anotace/settery:

services:
	-
		class: App\Model\model
    	inject: yes
Marek Šneberger
Člen | 130
+
0
-

V komponentách jedině konstruktor. Pokud si nechceš v tovrničce předávat závislosti, doporučuju si vytvořit interface a Nette ti závislosti automaticky předá. Viz příklad v plaNette

Editoval Marek Šneberger (11. 1. 2015 15:42)

Hitny14
Člen | 90
+
0
-

Tak sem použil ten konstruktor.

private $model;

public function __construct(\App\Model\CommentsModel $model) {
    $this->model = $model;
}

a laděnka mi hlásí chybu:
Argument 1 passed to CommentsArcicle::__construct() must be an instance of App\Model\CommentsModel, none given, called in C:\xampp\htdocs\NetteRS\app\FrontModule\presenters\ArciclePresenter.php on line 80 and defined

ArciclePdesenter:

protected function createComponentCommentsArticle() {
        $comments = new \CommentsArticle(); //toto je řádka 80 kde je chyba

        return $comments;
    }
David Matějka
Moderator | 6445
+
0
-

@Hitny14 precti si odkazovany clanek na planette od @MarekŠneberger nebo kapitolu v dokumentaci