Nelze vytvořit instanci Nette\Database\Connection

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

V config. neon mám toto:
common:
php: # PHP configuration
date.timezone: Europe/Prague
# session.save_path: „%tempDir%/sessions“
# zlib.output_compression: yes
heslo: xxx

services:
robotLoader:
run: true

database:
class: Nette\Database\Connection
arguments: [‚mysql:host=localhost;dbname=test‘, ‚root‘, %heslo%]
methods: [
[setCacheStorage, [@cacheStorage]],
 ]

authenticator:
class: Nette\Security\SimpleAuthenticator
arguments: admin

news: News

production < common:

development < common:

console < common:

A mám model, ve kterém chci přistupovat do databáze.

class news extends Nette\Object {
	/** @var Nette\Database\Connection */
	public $database;



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



    function create($name, $message)
    {

	$this->database->table('news')->insert(array(
	    'name' => $name,
	    'create_date' => new DateTime,
	    'message' => $message,
	));


    }

Když si zavolám v presenteru metodu create

$this->context->news->add($values->name, $values->message);

Tak mi to vrátí chybu : Argument 1 passed to news::__construct() must be an instance of Nette\Database\Connection, none given.

Nemůžu za boha zjistit, proč se mi nevytváří ta instance.

Petr Mašát
Člen | 101
+
0
-

Hoj,
při vytváření třídy news musíš poslat z presenteru i na jakou databázi se má napojit. Např. pomocí:

<?php
$news = new news($this->context->database);
?>

Stejný problém jsem také řešil : )
Jinak názvy class se běžně píší na začátku velkým písmenem.
 pm*

Editoval tachyon (25. 10. 2011 12:42)

James_Scott
Člen | 55
+
0
-

Super, díky moc za rady,funguje ;)

bojovyletoun
Člen | 667
+
0
-

proboha! takhle jsi celé DI zabil!
Myslel jsi to asi konfigurovat pěkně v configu,že?

services:
	news:
		class: News
		arguments:
			- @database
22
Člen | 1478
+
0
-

@bojovyletoun: neni tohle hezčí? :-)

services:
        news:
                class: News
                arguments: [@database]
Tharos
Člen | 1030
+
0
-

A co teprve tohle ;)…

services:
	news:
		class: News
		option: @database
22
Člen | 1478
+
0
-

lol..who knows?

Aurielle
Člen | 1281
+
0
-

Tharos: option má být zrušeno, možná už bylo (GH v poslední době nesleduju)…

James_Scott
Člen | 55
+
0
-

Ze zacatku jsem pouzil tu variantu vyse bez DI, pozdeji kdyz jsem se zacal trosku orientovat v Nette a celkove v OOP, tak pouzivam variantu uzivatele 22.