vlastny DI konfigurator v Nette 2.3

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

Po nejakej dobe sa vraciam k Nette a chcem updateovat starsi projekt na verziu 2.3.
Ako prepisat nasledovny kod pre verziu 2.3, teda ako zaregistrovat automaticky rozsirenia?

Dakujem

class MyConfigurator extends Configurator
{
// ...

/**
	 * @return ContainerFactory
	 */
	protected function createContainerFactory()
	{
		$factory = parent::createContainerFactory();
		$factory->onCompile[] = function(ContainerFactory $factory, Compiler $compiler, $config) {
			$netteExtension = new NetteExtension();
			$this->setNetteExtensionDefaults($netteExtension);

			$compiler->addExtension('hasher', new HasherExtension)
				->addExtension('nette', $netteExtension)
				->addExtension('forgottenPass', new ForgottenPasswordExtension);
			$this->onCompile($this, $compiler);
		};
		return $factory;
	}
}
Matúš Matula
Člen | 257
+
0
-

pouzil som addConfig() metodu volanu v konstruktore.. Je to spravne riesenie?

public function __construct()
	{
		parent::__construct();
		$this->onCompile[] = function(Configurator $sender, Compiler $compiler) {
			$compiler->addConfig($this->fixCompatibility([
					'latte' => [
						'xhtml' => 'no',
					],
					'session' => [
						'cookie_path' => '%baseUrl%',
						'expiration' => '%session.lifetime%',
						'autoStart' => 'smart',
						'save_path' => '%sessionDir%',
						'save_handler' => 'files', # for websupport, default memcache
					],
					'application' => [
						'errorPresenter' => 'Front:Error',
					],
					'database' => [
						'default' => [
							'dsn' => '%database.driver%:host=%database.host%;dbname=%database.dbname%',
							'user' => '%database.user%',
							'password' => '%database.password%',
						],
					],
			]));
			$compiler->addExtension('hasher', new HasherExtension)
				->addExtension('forgottenPass', new ForgottenPasswordExtension);
		};
Tomáš Votruba
Moderator | 1114
+
+1
-

Co dělá metoda setNetteExtensionDefaults()?

Jinak registruj v config.neon:

extensions:
	hasher: HasherExtension
	forgottenPass: ForgottenPasswordExtension

Pokud potřebuješ upravit/předat parametry, tak např.:

hasher:
	someParam: someValue

Edit, už vidím. Takto:

latte:
	xhtml: no

# atd.

Editoval Tomáš Votruba (17. 5. 2015 17:13)