diff --git a/src/Bridges/ApplicationDI/ApplicationExtension.php b/src/Bridges/ApplicationDI/ApplicationExtension.php
index 5acd5bf97..02c4540e9 100644
--- a/src/Bridges/ApplicationDI/ApplicationExtension.php
+++ b/src/Bridges/ApplicationDI/ApplicationExtension.php
@@ -96,7 +96,7 @@ public function loadConfiguration(): void
->setType(Nette\Application\IPresenterFactory::class)
->setFactory(Nette\Application\PresenterFactory::class, [new Definitions\Statement(
Nette\Bridges\ApplicationDI\PresenterFactoryCallback::class,
- [1 => $this->invalidLinkMode, $touch ?? null],
+ [1 => $touch ?? null],
)]);
if ($config->mapping) {
diff --git a/src/Bridges/ApplicationDI/PresenterFactoryCallback.php b/src/Bridges/ApplicationDI/PresenterFactoryCallback.php
index 7e60db7c0..5efd29016 100644
--- a/src/Bridges/ApplicationDI/PresenterFactoryCallback.php
+++ b/src/Bridges/ApplicationDI/PresenterFactoryCallback.php
@@ -20,7 +20,6 @@ final class PresenterFactoryCallback
{
public function __construct(
private readonly Nette\DI\Container $container,
- private readonly int $invalidLinkMode,
private readonly ?string $touchToRefresh,
) {
}
@@ -40,25 +39,13 @@ public function __invoke(string $class): Nette\Application\IPresenter
return $this->container->createService($services[0]);
}
- if ($this->touchToRefresh) {
+ if ($this->touchToRefresh && class_exists($class)) {
touch($this->touchToRefresh);
+ echo 'Class ' . htmlspecialchars($class) . ' was not found in DI container.
If you just created this presenter, it should be enough to refresh the page. It will happen automatically in 5 seconds.
Otherwise, please check the configuration of your DI container.';
+ header('Refresh: 5');
+ exit;
}
- try {
- $presenter = $this->container->createInstance($class);
- $this->container->callInjects($presenter);
- } catch (Nette\DI\MissingServiceException | Nette\DI\ServiceCreationException $e) {
- if ($this->touchToRefresh && class_exists($class)) {
- throw new \Exception("Refresh your browser. New presenter $class was found.", 0, $e);
- }
-
- throw $e;
- }
-
- if ($presenter instanceof Nette\Application\UI\Presenter && !isset($presenter->invalidLinkMode)) {
- $presenter->invalidLinkMode = $this->invalidLinkMode;
- }
-
- return $presenter;
+ throw new Nette\Application\InvalidPresenterException("No services of type $class found.");
}
}