pomoc s vytvorenim modelu ve 2.0.6

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

ahoj, opet jsem za blba, od rana se tu marne snazim vytvorit model abycg mohl pracovat s DB

vychazim z aktualniho sandboxu

v configu mam

database:
dsn: ‚mysql:host=localhost;dbname=katastr‘
user: ‚katastr‘
password: ‚veslo‘

services:
authenticator: Authenticator
# database: @Nette\Database\Connection
model: model

tady uz jsem zkousel ledacos …

model vypada takto

<?php

class model extends Nette\Object {
	private $database;

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

	public function getObce(){
		return $this->database->table('obce');
	}
}
?>

a v presenteru …

<?php
	public function renderDefault()
	{

		$model = new model;
		$this->template->obce = $model->getObce()->fetchAll();
?>

a zarve mi to v modelu v __construct
ze chce instance of Nette\Database\Connection ale dostal none :(

mrzi me ze zase otravuju, ale ja se k tomu dostanu jednou za cas a dost veci se meni, chapu ze k lepsimu, ale nejka to nestiham
poctive jsem hledal na foru i a webu, ale

https://doc.nette.org/cs/configuring
ani
https://doc.nette.org/cs/database

mi nepomohlo, nechci pouzivat repository, jenom takovy oldschool jako je SELECT fld FROM tbl … apod …

skoda ze toto neni soucasti sandboxu nebo nejakeho prikladu :(

dekujii za porady TH

Jan Endel
Člen | 1016
+
0
-

Vezmi si tento config neon:

common:
	parameters:

	php:
		date.timezone: Europe/Prague
		# zlib.output_compression: yes

	nette:
		application:
			errorPresenter: Error

		database:
			dsn: 'mysql:host=localhost;dbname=test'
			user: katastr
			password: veslo

		session:
			expiration: 14 days


	services:
		authenticator: Authenticator
		model: model


	factories:


production < common:

development < common:

btw, názvy tříd by měly VŽDY začínat velkým písmenem. a nedávej nikdy na fóru svá hesla.

Editoval pilec (22. 10. 2012 14:48)

Marek Šneberger
Člen | 130
+
0
-

V presenteru:

$this->template->obce = $this->context->model->getObce()->fetchAll();

Akorát doporučuju přepsat „model“ na „obce“. Pokud nehodláš mít všechny metody v jednom souboru

thcom
Backer | 95
+
0
-

diky moc za rady,
hledal jsem totiz stale chybu v konfigu a pritom tam nema byt to $model = new Model;

ale $this->context->model->getObce()->fetchAll();

jinak co se tyce hesla ja ho zmenil nez jsem ho tam dal, spravne heslo je superbezpecne aaa :)
vzhledem tomu, ze je to na localhostu, tak jsem to neresil, ale jinak chapu, ze je lepsi upozornit nez aby tu nekdo odhalil produkci pristup :)

@Marek Šneberger je to malinkata aplikace takze to mam zatim v 1 souboru, ale jinak tvuj komentar mi vlastne donakopl, jak to ma byt

DEKUJI !

OK3
Člen | 91
+
0
-

thcom napsal(a):

hledal jsem totiz stale chybu v konfigu a pritom tam nema byt to $model = new Model;

Tak může, ale musel bys mu v parametru podstrčit to připojení.

<?php
$model = new Model($connection);
?>

Editoval OK3 (22. 10. 2012 17:16)

Marek Šneberger
Člen | 130
+
0
-

OK3 napsal(a):

Tak může

Může, ale je to zbytečný (a prostě fuj :-)), když tu máme Autowiring :)