Ergebnis 1 bis 3 von 3

Thema: Custom Bundle + Routing - Website "Rahmen" vom Frontend Controller aus laden

  1. #1
    Contao-Nutzer
    Registriert seit
    13.04.2018.
    Beiträge
    6

    Standard Custom Bundle + Routing - Website "Rahmen" vom Frontend Controller aus laden

    Hi,

    ich benötige einen kleinen Stups in die richtige Richtung:
    Ich baue aktuell an einer eigenen Extension mit einem eigenen Routing + eigenem Frontend Controller.
    Als Grundlage dient mir BugBusters routing app Beispiel (https://github.com/BugBuster1701/con...ig/routing.yml).

    Das Routing läuft soweit und der Frontend Controller ist soweit angeschlossen.
    Ich konnte problemlos für meine Routes gewünschte JSON-Daten zurückgeben.

    Ich stehe nun jedoch or dem Problem, dass ich ein Custom Fomrmular für eine bestimmte Route aufsetzen müsste.
    Das Formular lässt sich problemlos via der Form Klassen von Haste erstellen:

    PHP-Code:
        public function getReserveFormAction($_locale 'de')
        {
            
    //
            // init the form
            
    $objForm = new Form('reserve-form''POST', function ($objHaste) {
                return \
    Input::post('FORM_SUBMIT') === $objHaste->getFormId();
            });

            
    //
            // setup fields

            // Now let's add form fields:
            
    $objForm->addFormField('year', array(
                
    'label' => 'Year',
                
    'inputType' => 'text',
                
    'eval' => array('mandatory' => true'rgxp' => 'digit')
            ));

            
    // Need a checkbox?
            
    $objForm->addFormField('termsOfUse', array(
                
    'label' => array('This is the <legend>''This is the <label>'),
                
    'inputType' => 'checkbox',
                
    'eval' => array('mandatory' => true)
            ));

            
    // Let's add  a submit button
            
    $objForm->addFormField('submit', array(
                
    'label' => 'Submit form',
                
    'inputType' => 'submit'
            
    ));

            
    // Automatically add the FORM_SUBMIT and REQUEST_TOKEN hidden fields.
            // DO NOT use this method with generate() as the "form" template provides those fields by default.
            
    $objForm->addContaoHiddenFields();

            
    // For the ease of use we do provide two helpers for the submit button and captcha field
            
    $objForm->addSubmitFormField('submit''Submit form');
    ...

            
    // output parsing
            
    $objMyTemplate = new \FrontendTemplate('fe_sdm_pdm_reserve_form_wrapper');
            
    $objForm->addToTemplate($objMyTemplate);
            
    $strBuffer $objMyTemplate->parse();

            
    $objResponse = new \Symfony\Component\HttpFoundation\Response($strBuffer);
            return 
    $objResponse;
        } 
    Aktuelles template:
    HTML-Code:
    <div class="reserve-form-wrapper">
        <form<?php if ($this->action): ?> action="<?= $this->action ?>"<?php endif; ?> method="<?= $this->method ?>"
                                                                                       enctype="<?= $this->enctype ?>">
            <div<?= $this->attributes ?><?= $this->novalidate ?>>
                <?php if ($this->method != 'get'): ?>
                    <input type="hidden" name="FORM_SUBMIT" value="<?= $this->formSubmit ?>">
                    <input type="hidden" name="REQUEST_TOKEN" value="{{request_token}}">
                    <?php if ($this->maxFileSize): ?>
                        <input type="hidden" name="MAX_FILE_SIZE" value="<?= $this->maxFileSize ?>">
                    <?php endif; ?>
                <?php endif; ?>
                <?= $this->hidden ?>
                <?= $this->fields ?>
            </div>
        </form>
    </div>
    Ich erhalte nun das reine Formular ohne Standard fe_page wrapping zurück.
    Ich würde nun jedoch gerne header und Footer meines default Seitentemplates übernehmen.
    Jedoch haben alle versuche / Ansätze bisher nicht gefruchtet / in Fehlern geendet.

    Versucht hatte ich ua.:
    meine Methode "getReserveFormAction" initial zu starten mit:
    PHP-Code:
    $contaoFramework $this->get('contao.framework');
            
    $contaoFramework->initialize(); 
    Um das COntao Framework zu laden.

    Innerhalb des Templates hatte ich am Anfang hinzugefügt:
    HTML-Code:
    <?php $this->extend('fe_page'); ?>
    Welches zum Fehler führt, das die Section 'top' nicht definiert ist:
    Code:
    ErrorException:
    Warning: array_filter() expects parameter 1 to be array, null given
    
      at vendor\contao\core-bundle\src\Resources\contao\classes\FrontendTemplate.php:200
      at Contao\FrontendTemplate->sections('top')

    Innerhalb des Templates hatte ich am Anfang hinzugefügt (wir verwenden das Boostrap bundle für unsere Basisseiten):
    HTML-Code:
    <?php $this->extend('fe_bootstrap'); ?>
    Dies führt dann zum Fehler:
    Code:
    TypeError:
    Argument 2 passed to ContaoBootstrap\Layout\Helper\LayoutHelper::__construct() must be an instance of Contao\LayoutModel, null given, called in D:\Projekte\rednick 0001-DR-2018\pareus\template_without_cm\vendor\contao-bootstrap\layout\src\Helper\LayoutHelper.php on line 101
    Beide Fehlermeldungen zeigen an, dass ich bestimmte Module noch nicht geladen sind zur Laufzeit.

    Bootstrapping Reihenfolge in getBundles von ContaoManagerPlugin:
    PHP-Code:
    BundleConfig::create('Schmidtdenktmit\PDMBundle\SchmidtdenktmitPDMBundle')
                    ->
    setLoadAfter(['Contao\CoreBundle\ContaoCoreBundle']), 
    Hat jemand einen Tipp, wie ich den "Outer" Bereich bei einer Custom Route im Custom Controller laden kann?
    Bin für jeden Tip dankbar und die Suche hat leider nichts gebracht.

    Vielen Dank vorab!

  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

    Das Thema hatten wir vor kurzem schon mal. Ich bin mir nicht sicher ob das so einfach möglich ist, ist denn Contao braucht für das Frontend prinzipiell den Kontext einer regulären Seite (bspw. für das Seitenlayout).

  3. #3
    Contao-Nutzer
    Registriert seit
    13.04.2018.
    Beiträge
    6

    Standard

    Hi,
    wie ich den Context einer anderen Seite übernehmen könnte, da hast du keine Idee oder?

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
  •