NEON – ani skalár, ani array

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

Reagujem sám na seba (teda, pravda, spamujem): Database substitutions – fungujú?

Mám tento NEON:

	services:
		robotLoader:
			run: true

		factories:
			class: FactoryModel

		authenticator:
			factory: ["@factories", createAuthenticatorService]

		database:
			factory: ["@factories", createDatabaseService]
			arguments: %database%   # Kritický, problémový riadok

		model:
			class: BaseModel
			arguments: ["@factories"]

production < common:
	database:
		username: root
		password:
		hostname: localhost
		database: cmsdb
		prefixes:
			prefix:
			suffix:

Skúšal som formou: [%database%] aj %database, pri obidvoch, mi vypíše warning/exception.
V prvom prípade: InvalidStateException – parameter ‚database‘ is not scalar. Odvoláva sa to na Container.php:

elseif (!is_scalar($val = Nette\Utils\Arrays::get((array) $that->params, explode('.', $param)))) {
257:                        throw new Nette\InvalidStateException("Parameter '$param' is not scalar."); // <= tu.
}

V druhom prípade: Warning: array_map() Argument #2 should be an array.ContainerBuilder.php:

private function argsExport($args)
{
153:            $args = implode(', ', array_map(array($this, 'varExport'), $args)); // <= tu.

Editoval Peppy (4. 8. 2011 16:07)

nanuqcz
Člen | 822
+
0
-

Ahoj, neměla by sekce database být odsazená?

production < common:
    database:
        username: root
        password:
        hostname: localhost
        database: cmsdb
        prefixes:
                prefix:
                suffix:

Jinak, [%database%] je správně.

A taky mě napadá, určitě tady mají být ty uvozovky? factory: ["@factories", ... Já to vždycky píšu bez nich :-) prostě jen factory: [@factories, ...

Peppy
Člen | 137
+
0
-

Tá database je odsadená v reáli, tu to akosi som to zmazal tabulátor. No, skúsil som už aj bez úvodzoviek, a na tom nezáleží – iba v Netbeans to má problém „higlightovať“ kvôli invalide character-u. Stále ten istý problém.

// EDIT:
Dokonca je tam aj ten tabulátor (v topicu), len akosi ho nežerie, a nechce to posunúť.

Editoval Peppy (4. 8. 2011 16:08)

22
Člen | 1478
+
0
-

nemáš starou verzi Nette..?

uestla
Backer | 796
+
0
-

EDIT:

Expandované proměnné je třeba obalit apostrofkami:

// nedejte na tuhle radu vlka nic
arguments: "%database%"

Editoval uestla (4. 8. 2011 16:33)

22
Člen | 1478
+
0
-

@uestla: to není pravda…

Peppy
Člen | 137
+
0
-

@22: Nette 2.0
@uestla: Sko(n)čilo to na druhú chybu (Warning: array_map() Argument #2…)

BTW: Stiahnem najnovší release. A uvidím.

EDIT: Nič.

Editoval Peppy (4. 8. 2011 16:25)

uestla
Backer | 796
+
0
-

@22: Jo, to máš pravdu.

David Grudl
Nette Core | 8136
+
0
-

Aktualizuj na poslední verzi nette.

Peppy
Člen | 137
+
0
-

Stiahnutá z nette.org. Nič. Sosnúť z Gitu?

EDIT:
Stiahnuté aj z GITu. Nič.

Editoval Peppy (4. 8. 2011 16:55)

22
Člen | 1478
+
0
-

beztak máš někde blbě tabulátor..
toto normálně funguje…

database:
	factory: [@factories, createDatabaseService]
        arguments: [%database%]

vydumpuj si to, co se tam děje. Promaž si Temp po update Nette.

Editoval 22 (4. 8. 2011 16:54)

Peppy
Člen | 137
+
0
-

Kebyže v „konfigu“ – myslím load&parse nejaký dump command bol.

Editoval Peppy (4. 8. 2011 16:56)

Peppy
Člen | 137
+
0
-

Nó! Už sme sa niekde dostali! Pre zmenu ku UnexpectedValueException, presnejšie:

Unable to create service 'database', value returned by factory '{closure}' is not object.

Ale to už je vec továrničky, lebo nevracia nič, momentálne. Dík všetkým. Bolo to zastaralou verziou Nette.