Seite 2 von 2
Re: Kalender im Posting als Erweiterung
Verfasst: 13.01.2015 18:14
von Kirk
Ich habe es jetzt die listener so abgeändert:
Code: Alles auswählen
public function add_calendar($event)
{
$this->template->assign_vars(array(
$row = $event['row'],
'MONTH_YEAR' => $this->user_OBJ->format_date($row['post_time'], 'M Y', false),
'DATE' => $this->user_OBJ->format_date($row['post_time'], 'd', false),
));
}
}
Ext deaktiviert und komplett gelöscht, Cache geleert, EXT aktiviert aber leider keine Veränderung.
Kann es sein das ich für
format_date
noch irgendwas einfügen muss?
In der
services.yml
habe ich das hier noch hinzugefügt
- @template
Re: Kalender im Posting als Erweiterung
Verfasst: 13.01.2015 18:33
von D@ve
Ohne jetzt genau zu wissen, was dieses Event macht. Du willst die $event['row'] verändern, dann musst Du das auch wieder an das Event-Array zurückgeben. ODER Du schreibst das direkt ins Template, aber nicht beides gleichzeitig
Also entweder so...
Code: Alles auswählen
public function add_calendar($event)
{
$row = $event['row'];
$row[ 'MONTH_YEAR'] = $this->user_OBJ->format_date($row['post_time'], 'M Y', false);
$row[ 'DATE'] = $this->user_OBJ->format_date($row['post_time'], 'd', false),
$event['row'] = $row;
}
(hier holst Du Dir aus dem Event-Objekt das Array "row" und fügst Du zwei Template-Variablen hinzu und schreibst das wieder zurück ins Event-Objekt:
oder so:
Code: Alles auswählen
public function add_calendar($event)
{
$this->template->assign_vars(array(
'MONTH_YEAR' => $this->user_OBJ->format_date($row['post_time'], 'M Y', false),
'DATE' => $this->user_OBJ->format_date($row['post_time'], 'd', false),
));
}
(Hier ignorierst Du das Event-Objekt und schreibst Deine Variablen direkt ins Template)
Re: Kalender im Posting als Erweiterung
Verfasst: 17.01.2015 13:57
von Kirk
Ich habe in der
listner.php
das hier eingetragen:
Code: Alles auswählen
public function add_calendar($event)
{
$this->template->assign_vars(array(
'MONTH_YEAR' => $this->user_OBJ->format_date($row['post_time'], 'M Y', false),
'DATE' => $this->user_OBJ->format_date($row['post_time'], 'd', false),
));
}
Die html Datei sieht so aus:
Code: Alles auswählen
<div class="calendar_sheet">
<div class="date">
<span class="month">{postrow.MONTH_YEAR}</span>
<span class="day">{postrow.DATE}</span>
</div>
</div>
Jetzt bekomme ich wieder diese Fehlermeldung:
phpBB Debug] PHP Notice: in file [ROOT]/ext/kirk/calendarinposting/event/listener.php on line 63: Undefined variable: row
Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct() [<a href='
http://de.php.net/datetime.construct'>d ... nstruct</a>]: Failed to parse time string (@) at position 0 (@): Unexpected character' in /users/kirk2/www/phpBB3/phpbb/datetime.php:50 Stack trace: #0 /users/kirk2/www/phpBB3/phpbb/datetime.php(50): DateTime->__construct('@', Object(DateTimeZone)) #1 /users/kirk2/www/phpBB3/phpbb/user.php(720): phpbb\datetime->__construct(Object(phpbb\user), '@', Object(DateTimeZone)) #2 /users/kirk2/www/phpBB3/ext/kirk/calendarinposting/event/listener.php(63): phpbb\user->format_date(NULL, 'M Y', false) #3 [internal function]: kirk\calendarinposting\event\listener->add_calendar(Object(phpbb\event\data)) #4 /users/kirk2/www/phpBB3/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php(164): call_user_func(Array, Object(phpbb\event\data)) #5 /users/kirk2/www/phpBB3/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php(53): Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(Array, 'core.viewtopic_...', Object(phpbb\event\data)) #6 /users/kirk2/www/phpBB3/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/ContainerAwareEventDispatcher.php(167): Symfony\Component\EventDispatcher\EventDispatcher->dispatch('core.viewtopic_...', Object(phpbb\event\data)) #7 /users/kirk2/www/phpBB3/phpbb/event/dispatcher.php(40): Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('core.viewtopic_...', Object(phpbb\event\data)) #8 /users/kirk2/www/phpBB3/viewtopic.php(1728): phpbb\event\dispatcher->trigger_event('core.viewtopic_...', Array) #9 {main} thrown in /users/kirk2/www/phpBB3/phpbb/datetime.php on line 50
Trage ich es so ein:
Code: Alles auswählen
public function add_calendar($event)
{
$this->template->assign_vars(array(
$row = $event['row'],
'MONTH_YEAR' => $this->user_OBJ->format_date($row['post_time'], 'M Y', false),
'DATE' => $this->user_OBJ->format_date($row['post_time'], 'd', false),
));
}
wird mir zwar keine Fehlermeldung angezeigt, dafür aber auch kein Datum.
So sollte es ausschauen:
[ externes Bild ]
Re: Kalender im Posting als Erweiterung
Verfasst: 18.01.2015 02:26
von Elsensee
Naja.. du musst
row
schon noch aus dem Objekt holen.. Aber warum da bei dir bei der zweiten Version kein Syntax-Fehler kommt, verwirrt mich.. In PHP darf man offenbar echt alles...
Zumindest is $row vor dem Array noch nicht initialisiert, weshalb du das Objekt noch nicht benutzen kannst. (Aber es sollte trotzdem.. ach egal

)
Muss dann also so heißen:
Code: Alles auswählen
public function add_calendar($event)
{
$row = $event['row'];
$this->template->assign_vars(array(
'MONTH_YEAR' => $this->user_OBJ->format_date($row['post_time'], 'M Y', false),
'DATE' => $this->user_OBJ->format_date($row['post_time'], 'd', false),
));
}
Re: Kalender im Posting als Erweiterung
Verfasst: 18.01.2015 09:32
von Kirk
Danke Elsensee aber es wird immer noch kein Datum in dieser Grafik angezeigt.
Re: Kalender im Posting als Erweiterung
Verfasst: 18.01.2015 18:31
von Elsensee
Hmm.. Natürlich.
Schließlich willst du es ja pro Beitrag ausgeben - deswegen muss das sowas sein, wie
$this->template->assign_block_vars(...
.
Schritt 1: Das Event
core.viewtopic_modify_post_row
anstelle von
core.viewtopic_modify_post_action_conditions
benutzen.
Schritt 2: D@ves erste Version benutzen - so halb... Es muss eine andere Variable verändert werden. Zumindest kannst du die Variablen nicht direkt ans Template übergeben. Du musst es aber nicht so machen - du kannst es auch so machen:
Code: Alles auswählen
public function add_calendar($event)
{
$row = $event['row'];
$event['post_row'] = array_merge($event['post_row'], array(
'MONTH_YEAR' => $this->user_OBJ->format_date($row['post_time'], 'M Y', false),
'DATE' => $this->user_OBJ->format_date($row['post_time'], 'd', false),
));
}
Das ist Erhalten, Verändern und Zurückgeben in quasi nur einem Schritt.

Re: Kalender im Posting als Erweiterung
Verfasst: 18.01.2015 18:38
von Kirk
Jetzt funktioniert es, vielen Dank Elsensee

Re: Kalender im Posting als Erweiterung
Verfasst: 18.01.2015 19:00
von Talk19zehn
Hello, "Bedankomat" und "Gratulation" an Elsensee, der mit wenigen logischen Informationen das Ziel einleitete. Vielen Dank dafür, da ich Nicht-phpLer mitfieberte und suchte, suchte, suchte, um zu verstehen.
Man oh man, --- ich hatte gerade das Date-Format in Verdacht und wühlte vergeblich in jenen Strukturen. Dir Kirk, viel Glück mit der Extension.
Grüße