Steffen Hallo Thomas, ich habe den ViewHelper in meine Erweiterung der Extension hier abgelegt packages/dmfh-cartproducts/Classes/ViewHelpers/MyLanuguageViewhelper.php
Der ViewHelper sieht so aus:
declare(strict_types=1);
namespace Dmfh\DmfhCartproducts\ViewHelpers;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
class MyLanuguageViewhelper extends AbstractViewHelper
{
public function initializeArguments(): void
{
$this->registerArgument('table', 'string', 'tx_cartproducts_domain_model_product_product', true);
$this->registerArgument('uid', 'int', 21, true);
}
public function render(): ?array
{
$table = $this->arguments['table'];
$uid = (int)$this->arguments['uid'];
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
->getQueryBuilderForTable($table);
$record = $queryBuilder
->select('*')
->from($table)
->where(
$queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT))
)
->executeQuery()
->fetchAssociative();
return $record ?: null;
}
}
Im Frontend bekomme ich folgende Fehlermeldung:
(1/1) Symfony\Component\DependencyInjection\Exception\InvalidArgumentException
Expected to find class "Dmfh\DmfhCartproducts\ViewHelpers\MyLanuguageViewhelper" in file "/var/www/html/packages/dmfh-cartproducts/Classes/ViewHelpers/MyLanuguageViewhelper.php" while importing services from resource "../Classes/*", but it was not found! Check the namespace prefix used with the resource.
Wenn ich noch folgendes ergänze: protected $escapeOutput = false; – ist die Fehlermeldung weg. Das scheint okay zu sein … 😊
Ins Fluid habe ich folgendes aufgenommen: {namespace my=Dmfh\DmfhCartproducts\ViewHelpers} und <f:debug>{my:record(table:'tx_cartproducts_domain_model_product_product', uid:21)}</f:debug>. Das erzeugt folgende Fehlermeldung:
(1/3) #1407060572 TYPO3Fluid\Fluid\Core\Parser\Exception
Fluid parse error in template partial_Product/List/Grid_d3bfaf1dad7a4d2f, line 20 at character 10. Error: The ViewHelper "<my:record>" could not be resolved. Based on your spelling, the system would load the class "Dmfh\DmfhCartproducts\ViewHelpers\RecordViewHelper", however this class does not exist. (error code 1407060572). Template source chunk: {my:record(table:'tx_cartproducts_domain_model_product_product', uid:21)}
Vielleicht ist an der Stelle noch relevant, dass ich die Produkt Datensätze in verschiendenen Kind Ordnern abgelegt. Dieser Eltern Ordner hat die UID 21.
Kannst du mir sagen, was ich da noch falsch mache? 🤔
Vielen Dank, Steffen