Jak správně nastavit QuoteStrategy v Nettrine?

obud
Člen | 15
+
0
-

Zdravím,

migruji jeden projekt z Kdyby/Doctrine na NettrineNette 3 a nemůžu přijít na to, jak v NEONu správně nastavit quoteStrategy.

Původně v Kdyby/Doctrine jsem měl:

doctrine:
	...
	quoteStrategy: App\Config\QuoteStrategy
<?php
declare(strict_types=1);

namespace App\Config;

use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Mapping\DefaultQuoteStrategy;

class QuoteStrategy extends DefaultQuoteStrategy
{
	public function getColumnName($fieldName, ClassMetadata $class, AbstractPlatform $platform)
	{
		$columnName = '`' . $class->fieldMappings[$fieldName]['columnName'] . '`';

		return isset($class->fieldMappings[$fieldName]['quoted'])
			? $platform->quoteIdentifier($columnName)
			: $columnName;
	}
}

Pro Nettrine jsem zkusil v NEONu upravit na následující, což vyvolá výjimku Nette\DI\InvalidConfigurationException
(The option ‚nettrine.orm › configuration › quoteStrategy‘ expects to be Nette\DI\Definitions\Statement, string ‚App\\Config\\QuoteStrategy‘ given.).

nettrine.orm:
	configuration:
		quoteStrategy: App\Config\QuoteStrategy

Schema konfigurace NEONu pro quoteStrategy je zápsáno jako 'quoteStrategy' => Expect::type(Statement::class), (pull request). Z tohoto zápisu mi bohužel není jasné, v jakém tvaru má hodnota parametru quoteStrategy být.

Poradil by mi prosím někdo, jak toto vyřešit a správně nastavit quoteStrategy? A uvedená třída QuoteStrategy bude funkční i s Nettrine?

Díky.

CZechBoY
Člen | 3608
+
0
-

Zkus si z ty tridy nejdriv udelat sluzbu a pak predat referenci na sluzbu.

Neco ve stylu

services:
    - App\Config\QuoteStrategy

nettrine.orm:
	configuration:
		quoteStrategy: @App\Config\QuoteStrategy
obud
Člen | 15
+
0
-

CZechBoY napsal(a):

Zkus si z ty tridy nejdriv udelat sluzbu a pak predat referenci na sluzbu.

Neco ve stylu

services:
    - App\Config\QuoteStrategy

nettrine.orm:
	configuration:
		quoteStrategy: @App\Config\QuoteStrategy

Zkusil jsem ten NEON upravit a pořád tam je string (sice tentokrát trochu kratší hláška)…

Nette\DI\InvalidConfigurationException
The option ‚nettrine.orm › configuration › quoteStrategy‘ expects to be Nette\DI\Definitions\Statement, string given.

Když si na zkoušku vyedituju /vendor/nettrine/orm/src/DI/OrmExtension.php, tak quoteStrategy s tím stringem funguje.

	...
	'namingStrategy' => Expect::string(UnderscoreNamingStrategy::class)->nullable(),
	'quoteStrategy' => Expect::string(), //Expect::type(Statement::class),
	'entityListenerResolver' => Expect::string(),
	...

Jak tedy z toho ven?

Díky.

Editoval obud (17. 7. 2020 8:42)

Felix
Nette Core | 1186
+
+1
-

Ahoj @obud. Muzes prosim vyzkouset dev-master? Melo by to podporovat vsechny druhy zapisu.

nettrine.orm:
	configuration:
		quoteStrategy: App\QuoteStrategy
		quoteStrategy: App\QuoteStrategy()
		quoteStrategy: @strategy

services:
    strategy: App\QuoteStrategy()
obud
Člen | 15
+
0
-

Ahoj @Felix,

díky moc. Ano, tyto zápisy mi na dev-master#9c02f6f fungují.