Phalanx
Člen | 310
+
0
-

Ahoj, ještě bych Vás chtěl poprosit o radu se SoftDeleteable s Nettrine Extensions.

Snažím se aktivovat filtr (pro příklad jen v presenteru):

<?php
$this->em->getFilters()->enable("softDeleteable");
?>

Ale stejně mi to vyhazuje chybu:
Filter ‚softDeleteable‘ does not exist

SoftDeleteable v configu mám nastavené na on a záznam se smazal správně. Bohužel se ale neuplatňují filtry při výběru dat např. findAll() nebo find($id) mi vyhodí vždy všechny záznamy (i ty smazané).


<?php

	public function renderDefault()
	{
		$this->em->getFilters()->enable("softDeleteable"); // hází Filter 'softDeleteable' does not exist, zkoušel jsem i s pomlčkou a malými písmeny
		//$this->em->getFilters()->enable('softdeleteable');
		$categoryRepository = $this->em->getRepository(Category::class);

		//$this->em->remove($categoryRepository->find(1));
		//$this->em->flush();


		$this->template->test = $categoryRepository->findAll();
	}
?>
extensions:
	# Console
	console: Contributte\Console\DI\ConsoleExtension(%consoleMode%)

	# DBAL
	dbal: Nettrine\DBAL\DI\DbalExtension
	dbal.console: Nettrine\DBAL\DI\DbalConsoleExtension

	# ORM
	orm: Nettrine\ORM\DI\OrmExtension
	#orm.cache: Nettrine\ORM\DI\OrmCacheExtension
	orm.console: Nettrine\ORM\DI\OrmConsoleExtension
	orm.annotations: Nettrine\ORM\DI\OrmAnnotationsExtension

	# extensions
	nettrine.extensions: Nettrine\Extensions\DI\DoctrineExtensionsExtension


nettrine.extensions:
    softDeleteable: on

Už na to hledím několik hodin a nevím si rady.


edit 2: vzdávám to

Editoval Phalanx (12. 12. 2018 8:48)

Martk
Člen | 661
+
0
-

Podle kódu se registrují jen listenery do dbal, filtry ne.

Phalanx
Člen | 310
+
0
-

@Martk Opět díky za navedení, funkční řešení je

<?php
	$config = $this->em->getConfiguration();
	$config->addFilter('soft-deleteable', SoftDeleteableFilter::class);
	$this->em->getFilters()->enable('soft-deleteable');
?>

do config.neon asi zatím možnost nastavení filtrů není přidána:

<?php
final class OrmExtension extends CompilerExtension
{

	/** @var mixed[] */
	private $defaults = [
		'entityManagerDecoratorClass' => EntityManagerDecorator::class,
		'configuration' => [
			'proxyDir' => '%tempDir%/proxies',
			// ...
			//TODO filters
			// ...
		],
	];
?>

Takže by pak mohlo jít jen:

orm:
	configuration:
		filters:
			softdeleteable:
				class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
				enabled: true
Martk
Člen | 661
+
0
-

@Phalanx Můžes poslat PR na dodělání @Felix bude rád.

Editoval Martk (12. 12. 2018 17:30)

Felix
Nette Core | 1245
+
+1
-

PR by bylo idealni. 👍

Pres svatky bude kupa casu ;-)