From bf584b0a7ecd7e5cddf1642e33200413462bba66 Mon Sep 17 00:00:00 2001 From: Eugene Kaurov Date: Tue, 19 Dec 2023 02:05:52 +0100 Subject: [PATCH] Update NewsLinkGenerator.php Add error message that user need to configure 'news_default_document' before StandatdTeaser usage. --- .../LinkGenerator/NewsLinkGenerator.php | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/Website/LinkGenerator/NewsLinkGenerator.php b/src/Website/LinkGenerator/NewsLinkGenerator.php index 329adc78..f271df40 100644 --- a/src/Website/LinkGenerator/NewsLinkGenerator.php +++ b/src/Website/LinkGenerator/NewsLinkGenerator.php @@ -9,8 +9,8 @@ * Full copyright and license information is available in * LICENSE.md which is distributed with this source code. * - * @copyright Copyright (c) Pimcore GmbH (http://www.pimcore.org) - * @license http://www.pimcore.org/license GPLv3 and PEL + * @copyright Copyright (c) Pimcore GmbH (http://www.pimcore.org) + * @license http://www.pimcore.org/license GPLv3 and PEL */ namespace App\Website\LinkGenerator; @@ -25,8 +25,14 @@ use Pimcore\Twig\Extension\Templating\PimcoreUrl; use Symfony\Component\HttpFoundation\RequestStack; +/** + * Generates URI links for News Data-Objects + * @todo stop using direct ID. You can use slug field or at least UUID + */ class NewsLinkGenerator implements LinkGeneratorInterface { + const DEFAULT_DOCUMENT = 'news_default_document'; + /** * @var DocumentResolver */ @@ -84,18 +90,21 @@ public function generate(object $object, array $params = []): string } if ($document && !$fullPath) { - $fullPath = $document->getProperty('news_default_document') ? substr($document->getProperty('news_default_document')->getFullPath(), strlen($localeUrlPart)) : ''; + $fullPath = $document->getProperty(static::DEFAULT_DOCUMENT) ? substr($document->getProperty(static::DEFAULT_DOCUMENT)->getFullPath(), strlen($localeUrlPart)) : ''; + } + if (!$fullPath) { + throw new \InvalidArgumentException('Set parameter '.static::DEFAULT_DOCUMENT.' for the root or current document.'); } $locale = $params['locale'] ?? null; return $this->pimcoreUrl->__invoke( [ - 'newstitle' => Text::toUrl($object->getTitle($locale) ? $object->getTitle($locale) : 'news'), - 'news' => $object->getId(), - 'path' => $fullPath, - '_locale' => $locale, - ], + 'newstitle' => Text::toUrl($object->getTitle($locale) ? $object->getTitle($locale) : 'news'), + 'news' => $object->getId(), + 'path' => $fullPath, + '_locale' => $locale, + ], 'news-detail', true );