Ergebnis 1 bis 21 von 21

Thema: Eigenes DCA für tl_newsletter_recipients wird ignoriert

  1. #1
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Frage Eigenes DCA für tl_newsletter_recipients wird ignoriert

    Mein DCA für die tl_newsletter_recipients wird ignoriert. Die Debugausgabe im Code ist leer. Offensichtlich existiert $GLOBALS['TL_DCA']['tl_newsletter_recipients']['palettes']['default'] zu dem Zeitpunkt noch nicht.

    dca/tl_newsletter_recipients.php:
    PHP-Code:
    <?php

    // Palette manipulieren
    $debug print_r($GLOBALS['TL_DCA']['tl_newsletter_recipients']['palettes']['default'], true);

    log_message($debug,'spielerregister.log');
    $GLOBALS['TL_DCA']['tl_newsletter_recipients']['palettes']['default'] = str_replace('active''active,spielerregister_mailTime'$GLOBALS['TL_DCA']['tl_newsletter_recipients']['palettes']['default']);

    /**
     * Neue Felder in tl_newsletter_recipients
     */

    // Zeitstempel des letzten Versands des Spielerregisters
    $GLOBALS['TL_DCA']['tl_newsletter_recipients']['fields']['spielerregister_mailTime'] = array
    (
        
    'label'                   => &$GLOBALS['TL_LANG']['tl_newsletter_recipients']['spielerregister_mailTime'],
        
    'exclude'                 => true,
        
    'flag'                    => 5,
        
    'inputType'               => 'text',
        
    'eval'                    => array
        (
            
    'tl_class'            => 'w50'
        
    ),
        
    'sql'                     => "int(10) unsigned NOT NULL default '0'"
    );
    In meiner composer.json habe ich sicherheitshalber eingetragen:
    PHP-Code:
    "require": {
        
    "contao/newsletter-bundle"">=0"
    }, 
    Ist aber scheinbar ohne Wirkung.
    Auch meine Felddefinition von spielerregister_mailTime wird ignoriert. Trage ich das Feld manuell in die Datenbank ein, wird mir das Feld zum Löschen vorgeschlagen.

    Ich finde den Fehler in meinem Code nicht. Die Datei wird aber geparst, denn wenn ich einen PHP-Fehler provoziere, wird der ausgegeben. Ich habe die Vermutung, das mein DCA später vom Newsletter-Bundle überschrieben wird. Falls das so ist, wie muß ich dieses Bundle als Abhängigkeit einfügen?
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.094
    Partner-ID
    10107

    Standard

    Ist das nun eine Applikationsanpassung oder implementierst du das in einer eigenen Extension?

  3. #3
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    In einer eigenen Extension.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  4. #4
    Contao-Fan Avatar von markocupic
    Registriert seit
    06.12.2010.
    Ort
    Oberkirch (Schweiz)
    Beiträge
    660

    Standard

    Hallo
    In der src/ContaoManager/Plugin.php musst du definieren, dass dein Bundle nach ContaoNewsletterBundle geladen werden muss.

    setLoadAfter....

    Lg Marko
    Anfragen für bezahlten Support oder Extension-Programmierung via PN.

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.094
    Partner-ID
    10107

  6. #6
    Contao-Fan Avatar von markocupic
    Registriert seit
    06.12.2010.
    Ort
    Oberkirch (Schweiz)
    Beiträge
    660

    Standard

    setLoadAfter....

    Code:
    class Plugin implements BundlePluginInterface
    {
        public function getBundles(ParserInterface $parser): array
        {
            return [
                BundleConfig::create(ContaoExampleBundle::class)
                    ->setLoadAfter([
                        ContaoCoreBundle::class,
                        ContaoNewsletterBundle::class,
                    ]),
            ];
        }
    }
    und danach ein composer install

    Lg Marko
    Geändert von markocupic (17.02.2021 um 12:51 Uhr)
    Anfragen für bezahlten Support oder Extension-Programmierung via PN.

  7. #7
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    Ich kann noch keinen Erfolg melden. Bei composer install kommt:
    PHP-Code:
    In tl_settings.php line 480:                                                 
    syntax errorunexpected '$GLOBALS' (T_VARIABLE
    Jetzt beginnt das Rätselraten welche der vielen tl_settings.php gemeint ist. Vor allen Dingen auch noch eine mit vielen Zeilen.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  8. #8
    Contao-Fan Avatar von markocupic
    Registriert seit
    06.12.2010.
    Ort
    Oberkirch (Schweiz)
    Beiträge
    660

    Standard

    Vielleicht die tl_settings.php im cache var/cache/prod/contao/dca/tl_settings.php oder var/cache/dev/contao/dca/tl_settings.php
    Zitat Zitat von Samson1964 Beitrag anzeigen
    Ich kann noch keinen Erfolg melden. Bei composer install kommt:
    PHP-Code:
    In tl_settings.php line 480:                                                 
    syntax errorunexpected '$GLOBALS' (T_VARIABLE
    Jetzt beginnt das Rätselraten welche der vielen tl_settings.php gemeint ist. Vor allen Dingen auch noch eine mit vielen Zeilen.
    Anfragen für bezahlten Support oder Extension-Programmierung via PN.

  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.094
    Partner-ID
    10107

    Standard

    Zitat Zitat von Samson1964 Beitrag anzeigen
    Ich kann noch keinen Erfolg melden. Bei composer install kommt:
    PHP-Code:
    In tl_settings.php line 480:                                                 
    syntax errorunexpected '$GLOBALS' (T_VARIABLE
    Jetzt beginnt das Rätselraten welche der vielen tl_settings.php gemeint ist. Vor allen Dingen auch noch eine mit vielen Zeilen.
    Das dürfte aber nun ein komplett anderes Problem sind und hat nichts mit deinem ursprünglichen Thread zu tun.

  10. #10
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    Stimmt. Das ist ein anderes Problem. So lange ich aber den Fehler in:
    PHP-Code:
    <?php if (!defined('TL_ROOT')) die('You cannot access this file directly!');

    /**
     * Contao Open Source CMS
     *
     * Copyright (C) 2005-2013 Leo Feyer
     *
     * @package   fen
     * @author    Frank Hoppe
     * @license   GNU/LGPL
     * @copyright Frank Hoppe 2013
     */

    /**
     * palettes
     */
    $GLOBALS['TL_DCA']['tl_settings']['palettes']['default'] .= ';{spielerregister_legend:hide},spielerregister_imageSize';

    /**
     * fields
     */

    $GLOBALS['TL_DCA']['tl_settings']['fields']['spielerregister_imageSize'] = array
    (
        
    'label'                   => &$GLOBALS['TL_LANG']['tl_settings']['spielerregister_imageSize'],
        
    'exclude'                 => true,
        
    'inputType'               => 'imageSize',
        
    'reference'               => &$GLOBALS['TL_LANG']['MSC'],
        
    'eval'                    => array('rgxp'=>'natural''includeBlankOption'=>true'nospace'=>true'helpwizard'=>true'tl_class'=>'w50'),
        
    'options_callback' => static function ()
        {
            return 
    System::getContainer()->get('contao.image.image_sizes')->getOptionsForUser(BackendUser::getInstance());
        },
        
    'sql'                     => "varchar(255) NOT NULL default ''"
    );
    (Zeile 480 ist die mit /** und nachfolgend fields)

    Hat bis vor Kurzem funktioniert. Erst seitdem ich versuche das Newsletter-Bundle reinzubekommen, kracht es bei composer install an der Stelle.

    Ich werde mal das setLoadAfter-Zeug wieder rauswerfen und ein neues composer install versuchen.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.094
    Partner-ID
    10107

    Standard

    Dieses
    PHP-Code:
    if (!defined('TL_ROOT')) die('You cannot access this file directly!'); 
    ist noch ein Überbleibsel aus Typolight/Contao 2. Das kannst du entfernen.

  12. #12
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    Das "composer install"-Problem ist gelöst. UltraEdit hat ein BOM in die Datei eingefügt, obwohl diese Option in den Programmeinstellungen nicht aktiviert ist. Ich habe die Datei auf ANSI umgestellt, danach funktionierte es.

    Nicht funktioniert nach wie vor die Erweiterung des DCA von tl_newsletter_recipients.

    Auszug Plugin.php des Bundles:
    PHP-Code:
    public function getBundles(ParserInterface $parser)
    {
        return [
            
    BundleConfig::create(ContaoSpielerregisterBundle::class)
                ->
    setLoadAfter([ContaoCoreBundle::class, ContaoNewsletterBundle::class]),
        ];

    Auszug composer.json des Bundles:
    PHP-Code:
    "require": {
        
    "php""^5.6 || ^7.0",
        
    "contao/core-bundle""^4",
        
    "contao/newsletter-bundle"">=0",
        
    "schachbulle/contao-helper-bundle"">=0"
    }, 
    Irgendwas fehlt da bestimmt noch. Ich frage mich sowieso, warum ich composer install extra ausführen muß. Ich entwickle im vendor-Ordner und habe immer den Debug-Modus an. Bisher funktionierten alle Änderungen im vendor-Ordner. Gelegentlich mußte ich den Composer-Cache löschen, mehr noch nie. Und composer install hat einen unschönen Nebeneffekt: Schlägt die Installation fehl, wird der vendor-Ordner mit alten Dateien überschrieben.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  13. #13
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.094
    Partner-ID
    10107

    Standard

    Zitat Zitat von Samson1964 Beitrag anzeigen
    Nicht funktioniert nach wie vor die Erweiterung des DCA von tl_newsletter_recipients.

    Auszug Plugin.php des Bundles:
    PHP-Code:
    public function getBundles(ParserInterface $parser)
    {
        return [
            
    BundleConfig::create(ContaoSpielerregisterBundle::class)
                ->
    setLoadAfter([ContaoCoreBundle::class, ContaoNewsletterBundle::class]),
        ];

    Poste die gesamte Plugin.php



    Zitat Zitat von Samson1964 Beitrag anzeigen
    Auszug composer.json des Bundles:
    PHP-Code:
    "require": {
        
    "php""^5.6 || ^7.0",
        
    "contao/core-bundle""^4",
        
    "contao/newsletter-bundle"">=0",
        
    "schachbulle/contao-helper-bundle"">=0"
    }, 
    Statt >=0 kannst du auch einfach * schreiben. Aber es wäre empfehlenswerter gewisse Mindestversionen anzugeben. Davon abgesehen musst du dir überlegen, ob dein Bundle tatsächlich eine Hard Dependency auf das contao/newsletter-bundle hat - oder ob deine Änderungen einfach nur Optional sind.

  14. #14
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    vendor/schachbulle/contao-spielerregister-bundle/src/ContaoManager/Plugin.php:
    PHP-Code:
    <?php

    namespace Schachbulle\ContaoSpielerregisterBundle\ContaoManager;

    use 
    Contao\CoreBundle\ContaoCoreBundle;
    use 
    Contao\ManagerPlugin\Bundle\BundlePluginInterface;
    use 
    Contao\ManagerPlugin\Bundle\Config\BundleConfig;
    use 
    Contao\ManagerPlugin\Bundle\Parser\ParserInterface;
    use 
    Schachbulle\ContaoSpielerregisterBundle\ContaoSpielerregisterBundle;

    class 
    Plugin implements BundlePluginInterface
    {
        
    /**
         * {@inheritdoc}
         */
        
    public function getBundles(ParserInterface $parser)
        {
            return [
                
    BundleConfig::create(ContaoSpielerregisterBundle::class)
                    ->
    setLoadAfter([ContaoCoreBundle::class, ContaoNewsletterBundle::class]),
            ];
        }
    }
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  15. #15
    Contao-Fan Avatar von markocupic
    Registriert seit
    06.12.2010.
    Ort
    Oberkirch (Schweiz)
    Beiträge
    660

    Standard

    Das use statement fehlt für ContaoNewsletterBundle.

    Richtig wäre:
    PHP-Code:
    <?php

    namespace Schachbulle\ContaoSpielerregisterBundle\ContaoManager;

    use 
    Contao\CoreBundle\ContaoCoreBundle;
    use 
    Contao\NewsletterBundle\ContaoNewsletterBundle;
    use 
    Contao\ManagerPlugin\Bundle\BundlePluginInterface;
    use 
    Contao\ManagerPlugin\Bundle\Config\BundleConfig;
    use 
    Contao\ManagerPlugin\Bundle\Parser\ParserInterface;
    use 
    Schachbulle\ContaoSpielerregisterBundle\ContaoSpielerregisterBundle;

    class 
    Plugin implements BundlePluginInterface
    {
        
    /**
         * {@inheritdoc}
         */
        
    public function getBundles(ParserInterface $parser)
        {
            return [
                
    BundleConfig::create(ContaoSpielerregisterBundle::class)
                    ->
    setLoadAfter([ContaoCoreBundle::class, ContaoNewsletterBundle::class]),
            ];
        }
    }
    Geändert von markocupic (17.02.2021 um 15:02 Uhr)
    Anfragen für bezahlten Support oder Extension-Programmierung via PN.

  16. #16
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.094
    Partner-ID
    10107

    Standard

    Du referenzierst ContaoNewsletterBundle::class ohne use statement. Das wäre in deinem Fall dann der folgende FQCN: Schachbulle\ContaoSpielerregisterBundle\ContaoManager\ContaoNewsletterBundle, eine solche Klasse gibt es aber höchstwahrscheinlich nicht. Wenn dann \Contao\NewsletterBundle\ContaoNewsletterBundle::class bzw.
    PHP-Code:
    use Contao\NewsletterBundle\ContaoNewsletterBundle;



    ContaoNewsletterBundle
    ::class 

  17. #17
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    Danke das wars! Ich habe selbst ein bißchen nach meinem Posting mit use experimentiert, aber nicht den richtigen Aufruf erraten. Mit
    PHP-Code:
    ->setLoadAfter([ContaoCoreBundle::class, \Contao\NewsletterBundle\ContaoNewsletterBundle::class]), 
    wurde jetzt mein DCA erkannt und es kann weitergehen.

    Vielen Dank an euch beide!
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  18. #18
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.094
    Partner-ID
    10107

    Standard

    Nutzt du keine IDE? Die würde das für dich machen bzw. dich auch gleich auf ein fehlendes use statement hinweisen.

  19. #19
    Contao-Fan Avatar von markocupic
    Registriert seit
    06.12.2010.
    Ort
    Oberkirch (Schweiz)
    Beiträge
    660

    Standard

    Wenn du das use statement
    Code:
    use Contao\NewsletterBundle\ContaoNewsletterBundle;
    gesetzt hast, wäre dann aber das hier gscheiter ;-)


    PHP-Code:
    ->setLoadAfter([ContaoCoreBundle::class, ContaoNewsletterBundle::class]), 
    Sonst macht das use sttement keinen Sinn.
    Anfragen für bezahlten Support oder Extension-Programmierung via PN.

  20. #20
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Nutzt du keine IDE? Die würde das für dich machen bzw. dich auch gleich auf ein fehlendes use statement hinweisen.
    Die Version von UltraEdit die ich habe, hat keine Unterstützung dafür.

    Zitat Zitat von markocupic Beitrag anzeigen
    Wenn du das use statement
    Code:
    use Contao\NewsletterBundle\ContaoNewsletterBundle;
    gesetzt hast, wäre dann aber das hier gscheiter ;-)
    Sonst macht das use sttement keinen Sinn.
    Habe use nicht eingesetzt.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  21. #21
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.094
    Partner-ID
    10107

    Standard

    Zitat Zitat von Samson1964 Beitrag anzeigen
    Die Version von UltraEdit die ich habe, hat keine Unterstützung dafür.
    UltraEdit ist ja auch nur ein einfacher Editor. Ich würde dir PHPStorm oder VSCode + Intelliphense empfehlen.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •