Hallo zusammen,
ich komme leider einfach nicht weiter. Ich habe mir die Contao Doku zu den Hooks durchgelesen und dazu unzählige Forenbeiträge.
Folgendes möchte ich lösen: Ich nutze calendar-event-booking-bundle für Buchungen. Leider wird in der Eventliste keine Information zur Verfügung gestellt, ob ein Event schon ausgebucht wurde. Ich möchte in der Datenbank die Einträge in tl_calendar_events_member anhand der PID zählen und mit der maximalen Anzahl abgleichen. Leider habe ich nur Grundkenntnisse in PHP und bin nicht routiniert genug und kenne auch die Contaoentwicklung nicht gut genug, weswegen elegantere Möglichkeiten für mich an dieser Stelle wegfallen.
Für die Realisierung wollte ich den getAllEvents Hook nutzen. Dafür habe ich mich an der Dokumentation entlang gehangelt:
/src/EventListener/myClass.php
HTML-Code:
<?php
// src/EventListener/myClass.php
namespace App\EventListener;
use Contao\CoreBundle\ServiceAnnotation\Hook;
use Contao\Module;
use Contao\Database;
/**
* @Hook("getAllEvents")
*/
class myClass{
public function __invoke(array $events, array $calendars, int $timeStart, int $timeEnd, Module $module): array
{
// Add events to $events or modify the array …
return $events;
}
}
?>
(Hier ist das Beispiel aus der Doku ohne meine Verzweiflungstaten)
composer.json
Code:
{
"type": "project",
"require": {
"contao/calendar-bundle": "4.9.*",
"contao/comments-bundle": "4.9.*",
"contao/conflicts": "*@dev",
"contao/faq-bundle": "4.9.*",
"contao/listing-bundle": "4.9.*",
"contao/manager-bundle": "4.9.*",
"contao/news-bundle": "4.9.*",
"contao/newsletter-bundle": "4.9.*",
"do-while/contao-backupdb-bundle": "^1.4",
"erdmannfreunde/onepage-navigation": "^1.1",
"heimrichhannot/contao-speed-bundle": "^1.9",
"heimseiten/contao-inviewport-bundle": "^1.0",
"heimseiten/contao-parallax-bundle": "^1.0",
"heimseiten/contao-universal-toggler-bundle": "^3.0",
"kmielke/calendar-extended-bundle": "^1.0",
"madeyourday/contao-rocksolid-custom-elements": "^2.3",
"madeyourday/contao-rocksolid-slider": "^2.0",
"markocupic/resource-booking-bundle": "^2.8",
"oveleon/contao-cookiebar": "^1.8",
"terminal42/contao-leads": "^1.4",
"terminal42/contao-node": "^1.4",
"terminal42/notification_center": "^1.5"
},
"extra": {
"contao-component-dir": "assets"
},
"scripts": {
"post-install-cmd": [
"Contao\\ManagerBundle\\Composer\\ScriptHandler::initializeApplication"
],
"post-update-cmd": [
"Contao\\ManagerBundle\\Composer\\ScriptHandler::initializeApplication"
]
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
Laut
Code:
vendor/bin/contao-console debug:container App\\EventListener\\myClass
wird mein Service auch registriert - wenn ich das richtig verstanden habe.
Mein Problem ist, dass ich keine Vorstellung davon habe, womit ich arbeiten kann und wie ich auf die einzelnen Arrays zugreifen kann. Ein var_dump oder print_r funktioniert ja nicht, weil ein Array zurück gegeben werden muss, oder? Ich weiß also nicht, wie ich zB an die ID eines Events komme oder an das Feld für die CSS Klasse, weil ich die Verschachtelung des Arrays nicht kenne und nicht weiß, wo ich diese Informationen finde
Versucht habe ich
Code:
$events->id
$events->cssClass
$events['class']
Oder habe ich einen Denkfehler: Mein Ansatz war, dass ich die neue CSS Klasse auch direkt im Frontend sehen müsste, sobald ich sie im Hook ergänze (wie oben versucht). Fehlt mir ein Zwischenschritt über das Template?
Ich sitze da jetzt mehrere Stunden dran und komme keinen Schritt weiter und bin für jeden Hinweis dankbar.
Liebe Grüße
ness
Lesezeichen