Contao-Camp 2024
Ergebnis 1 bis 8 von 8

Thema: Externes Bundle registrieren

  1. #1
    Contao-Fan
    Registriert seit
    21.12.2009.
    Beiträge
    445

    Standard Externes Bundle registrieren

    Hallo zusammen,

    ich verwende in einer 4.13.x Installation u.a. Symfony Forms um ein "spezielles" Formular in einem Contao-Modul bereitzustellen. Das pass soweit alles. Nun benötige ich eine SPAM bzw. ReCaptcha-Lösung. Ich will dazu folgendes Bundle verwenden https://github.com/Gregwar/CaptchaBundle

    Installation läuft problemlos durch. Wenn ich dann im Form-Builder das Ding als Feld einbaue, dann bekomme ich folgende Fehlermeldung:

    Too few arguments to function Gregwar\CaptchaBundle\Type\CaptchaType::__construc t(), 0 passed in /Users/*/*/Localhost/dev.domain/vendor/symfony/form/FormRegistry.php on line 89 and exactly 4 expected
    In der Anleitung steht: "If you don't use flex, register it manually". Also hab ich im Symfony config Verzeichnis die Datei bundles.php erstellt:

    PHP-Code:
    return [
        
    // ...
        
    Gregwar\CaptchaBundle\GregwarCaptchaBundle::class => ['all' => true]
    ]; 
    Cache geleert, wieder aufgerufen - leider selber Fehler. Ich arbeite mit dem Contao Manager Plugin, dort in der Plugin.php habe ich auch schon versucht über

    PHP-Code:
                BundleConfig::create(GregwarCaptchaBundle::class)
                    ->
    setLoadAfter([ContaoCoreBundle::class]) 
    etwas zu erreichen. Leider ohne Erfolg. Kann mir jemand sagen, was ich noch machen kann? So wie ich das verstanden habe, muss ich das Bundle registrieren. Aber wie....

    Danke euch :-)
    Viele Grüße aus dem Süden
    creativx
    ---- Planung ist Ersatz des Zufalls durch den Irrtum ----

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

    Standard

    Um Symfony Bundles in deiner Contao Managed Edition zu aktivieren, brauchst du ein Contao Manager Plugin unter dem FQCN App\ContaoManager\Plugin.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Fan
    Registriert seit
    21.12.2009.
    Beiträge
    445

    Standard

    Die hab ich eigentlich

    PHP-Code:
    class Plugin implements BundlePluginInterfaceExtensionPluginInterface
    {
        public function 
    getBundles(ParserInterface $parser)
        {
            return [
                
    BundleConfig::create(BaurImmoBundle::class)
                    ->
    setLoadAfter([ContaoCoreBundle::class]),
                
    BundleConfig::create(MakerBundle::class)
                    ->
    setLoadInDevelopment(true)
                    ->
    setLoadInProduction(false),
                
    BundleConfig::create(GregwarCaptchaBundle::class)
                    ->
    setLoadAfter([ContaoCoreBundle::class])
            ];
        }

        
    /**
         * Allows a plugin to override extension configuration.
         *
         * @param string $extensionName
         *
         * @return array
         */
        
    public function getExtensionConfig($extensionName, array $extensionConfigsContainerBuilder $container)
        {
            if (
    'monolog' !== $extensionName) {
                return 
    $extensionConfigs;
            }

            foreach (
    $extensionConfigs as &$extensionConfig) {
                
    // Add your custom "importer" channel
                
    if (isset($extensionConfig['channels'])) {
                    
    $extensionConfig['channels'][] = 'importer';
                } else {
                    
    $extensionConfig['channels'] = ['importer'];
                }

                if (isset(
    $extensionConfig['handlers'])) {
                    
    // Add your own handler before the "contao" handler
                    
    $offset = (int) array_search('contao'array_keys($extensionConfig['handlers']), true);

                    
    $extensionConfig['handlers'] = array_merge(
                        \
    array_slice($extensionConfig['handlers'], 0$offsettrue),
                        [
                            
    'api' => [
                                
    'type' => 'rotating_file',
                                
    'max_files' => 10,
                                
    'path' => '%kernel.logs_dir%/%kernel.environment%_importer.log',
                                
    'level' => 'info',
                                
    'channels' => ['importer'],
                            ],
                        ],
                        \
    array_slice($extensionConfig['handlers'], $offsetnulltrue)
                    );
                }
            }

            return 
    $extensionConfigs;
        }

    Und dort versuche ich eben die "Aktivierung" bereits, bisher ohne Erfolg.
    Viele Grüße aus dem Süden
    creativx
    ---- Planung ist Ersatz des Zufalls durch den Irrtum ----

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

    Standard

    Poste die gesamte Datei.
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Contao-Fan
    Registriert seit
    21.12.2009.
    Beiträge
    445

    Standard

    Gerne... Das "KundenBundle" trägt normalerweise den Namen des Kunden - das hab ich jetzt hier nur verändert...

    PHP-Code:

    declare(strict_types=1);


    namespace 
    App\ContaoManager;

    use 
    App\KundenBundle;
    use 
    Contao\CoreBundle\ContaoCoreBundle;
    use 
    Contao\ManagerPlugin\Bundle\BundlePluginInterface;
    use 
    Contao\ManagerPlugin\Bundle\Config\BundleConfig;
    use 
    Contao\ManagerPlugin\Bundle\Parser\ParserInterface;
    use 
    Contao\ManagerPlugin\Config\ContainerBuilder;
    use 
    Contao\ManagerPlugin\Config\ExtensionPluginInterface;
    use 
    Gregwar\CaptchaBundle\GregwarCaptchaBundle;
    use 
    Symfony\Bundle\MakerBundle\MakerBundle;

    class 
    Plugin implements BundlePluginInterfaceExtensionPluginInterface
    {
        public function 
    getBundles(ParserInterface $parser)
        {
            return [
                
    BundleConfig::create(KundenBundle::class)
                    ->
    setLoadAfter([ContaoCoreBundle::class]),
                
    BundleConfig::create(MakerBundle::class)
                    ->
    setLoadInDevelopment(true)
                    ->
    setLoadInProduction(false),
                
    BundleConfig::create(GregwarCaptchaBundle::class)
                    ->
    setLoadAfter([ContaoCoreBundle::class])
            ];
        }

        
    /**
         * Allows a plugin to override extension configuration.
         *
         * @param string $extensionName
         *
         * @return array
         */
        
    public function getExtensionConfig($extensionName, array $extensionConfigsContainerBuilder $container)
        {
            if (
    'monolog' !== $extensionName) {
                return 
    $extensionConfigs;
            }

            foreach (
    $extensionConfigs as &$extensionConfig) {
                
    // Add your custom "importer" channel
                
    if (isset($extensionConfig['channels'])) {
                    
    $extensionConfig['channels'][] = 'importer';
                } else {
                    
    $extensionConfig['channels'] = ['importer'];
                }

                if (isset(
    $extensionConfig['handlers'])) {
                    
    // Add your own handler before the "contao" handler
                    
    $offset = (int) array_search('contao'array_keys($extensionConfig['handlers']), true);

                    
    $extensionConfig['handlers'] = array_merge(
                        \
    array_slice($extensionConfig['handlers'], 0$offsettrue),
                        [
                            
    'api' => [
                                
    'type' => 'rotating_file',
                                
    'max_files' => 10,
                                
    'path' => '%kernel.logs_dir%/%kernel.environment%_importer.log',
                                
    'level' => 'info',
                                
    'channels' => ['importer'],
                            ],
                        ],
                        \
    array_slice($extensionConfig['handlers'], $offsetnulltrue)
                    );
                }
            }

            return 
    $extensionConfigs;
        }

    Viele Grüße aus dem Süden
    creativx
    ---- Planung ist Ersatz des Zufalls durch den Irrtum ----

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

    Standard

    Und nach Änderung des Plugins hast du composer install ausgeführt?
    » sponsor me via GitHub or PayPal or Revolut

  7. #7
    Contao-Fan
    Registriert seit
    21.12.2009.
    Beiträge
    445

    Standard

    Ich Hirnie...natürlich nicht

    Okay passt.... aber nur zum Verständnis: Da ich mit dem Contao Manager Plugin arbeite, muss man es eben so machen wie du es beschrieben hast. unter config/bundles.php würde das nicht funktionieren - richtig?

    Vielen vielen Dank dir!
    Viele Grüße aus dem Süden
    creativx
    ---- Planung ist Ersatz des Zufalls durch den Irrtum ----

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

    Standard

    config/bundles.php gibt es in der Contao Managed Edition nicht, nur in einer regulären Symfony Applikation.
    » sponsor me via GitHub or PayPal or Revolut

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
  •