if ($book->slug == $slug) {
$chosen = $book;
break;
}
}
return $chosen;
}
/**
* Gives an array of book objects which match a given category
*
*
* @return array
*/
public function getObjectsByIdentifier($identifier): array {
$parts = self::parseIdentifier($identifier);
$book = $this->getBookBySlug($parts['bookSlug']);
$language = $book->getLanguageByCode($parts['languageCode']);
$version = $language->getVersionByDescriptor($parts['versionDescriptor']);
return [
'book' => $book,
'language' => $language,
* @route("/{slug}/{code}/", requirements={"slug": "(?!_)(?!admin/)[^/]+"})
*/
public function languageAction($slug, $code, Library $library): Response {
$path = "{$slug}/{$code}";
$id = $library->getObjectsByIdentifier($path);
$version = $id['language']->getDefaultVersion()->path;
return $this->redirect("/{$path}/{$version}");
}
}
$this->dispatcher->dispatch($event, KernelEvents::CONTROLLER_ARGUMENTS);
$controller = $event->getController();
$arguments = $event->getArguments();
// call controller
$response = $controller(...$arguments);
// view
if (!$response instanceof Response) {
$event = new ViewEvent($this, $request, $type, $response);
$this->dispatcher->dispatch($event, KernelEvents::VIEW);
public function handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response
{
$request->headers->set('X-Php-Ob-Level', (string) ob_get_level());
try {
return $this->handleRaw($request, $type);
} catch (\Exception $e) {
if ($e instanceof RequestExceptionInterface) {
$e = new BadRequestHttpException($e->getMessage(), $e);
}
if (false === $catch) {
$this->boot();
++$this->requestStackSize;
$this->resetServices = true;
try {
return $this->getHttpKernel()->handle($request, $type, $catch);
} finally {
--$this->requestStackSize;
}
}
$this->request = $request;
}
public function run(): int
{
$response = $this->kernel->handle($this->request);
$response->send();
if ($this->kernel instanceof TerminableInterface) {
$this->kernel->terminate($this->request, $response);
}
$app = $app(...$args);
exit(
$runtime
->getRunner($app)
->run()
);
<?php
use App\Kernel;
require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
return function (array $context) {
return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
};
No log messages
TypeError
|
---|
TypeError: App\Model\Library::getBookBySlug(): Return value must be of type App\Model\Book, null returned at src/Model/Library.php:101 at App\Model\Library->getBookBySlug() (src/Model/Library.php:268) at App\Model\Library->getObjectsByIdentifier() (src/Controller/ReadController.php:68) at App\Controller\ReadController->languageAction() (vendor/symfony/http-kernel/HttpKernel.php:152) at Symfony\Component\HttpKernel\HttpKernel->handleRaw() (vendor/symfony/http-kernel/HttpKernel.php:74) at Symfony\Component\HttpKernel\HttpKernel->handle() (vendor/symfony/http-kernel/Kernel.php:202) at Symfony\Component\HttpKernel\Kernel->handle() (vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35) at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run() (vendor/autoload_runtime.php:29) at require_once('/var/www/civicrm-docs/vendor/autoload_runtime.php') (public/index.php:5) |