Hallo,
ich habe eine Extension für Ansprechpartner geschrieben. Jetzt möchte ich, das im Backend bei den Inhaltselementen einer Seite, wo dieses Plugin eingebunden ist, nicht nur der Pluginname, sondern auch der Name des ausgewählten Ansprechpartners steht. Sonst muss man ja immer in das Plugin gehen, um zu sehen, wer da ausgewählt wurde. Die Auswahl geschieht übrigens mittels Flexform.
Dafür habe ich folgenden Hook angelegt:
In der ext_localconf.php
[code]$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem']['contactperson_person'] =
\Vendor\Contactperson\Hooks\PageLayoutView\ContactpersonPreviewRenderer::class;
[/code]
Dann im Verzeichnis /Classes/Hooks/PageLayoutView/ die Datei ContactpersonPreviewRenderer.php angelegt mit folgendem Inhalt
[code]namespace Vendor\Contactperson\Hooks\PageLayoutView;
use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
use \TYPO3\CMS\Backend\View\PageLayoutView;
class ContactpersonPreviewRenderer implements PageLayoutViewDrawItemHookInterface
{
public function preProcess(
PageLayoutView &$parentObject,
&$drawItem,
&$headerContent,
&$itemContent,
array &$row
) {
if ($row['CType'] === 'list' && $row['list_type'] === 'contactperson_person') {
$itemContent .= '<p>Ansprechpartner</p>';
// Hier kommt der Fehler:
$elements = $personsRepository->findByUid($row['pi_flexform']);
$drawItem = false;
}
}
}
[/code]
Es wird alles richtig ausgegeben, nur an der Stelle wo "Hier kommt der Fehler" steht, kommt dieser Fehler:
Call to a member function findByUid() on null
In $row['pi_flexform'] steht die richtige ID drin, aber irgendwas ist hier noch nicht richtig.
Mein Frage:
Ist das überhaupt der richtige Weg? Geht das evtl. noch einfacher mit TCA oder sonstigem?
Ich bin wie immer für jeden Hinweis dankbar!
Viele Grüße,
Stephan