Ergebnis 1 bis 6 von 6

Thema: Frontendmodule - Controller

  1. #1
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.150

    Standard Frontendmodule - Controller

    Bin grad bei meine erste Erweiterung für Contao 5.3 fertig zu machen... hat sich da schon wieder was geändert zu der 4.13?

    PHP-Code:

    namespace WEBROXX\TESTManager\Controller\Frontend;


    use 
    Contao\CoreBundle\Controller\FrontendModule\AbstractFrontendModuleController;
    use 
    Contao\CoreBundle\ServiceAnnotation\FrontendModule;
    use 
    Contao\CoreBundle\Exception\PageNotFoundException;

    use 
    Symfony\Component\HttpFoundation\Request;
    use 
    Symfony\Component\HttpFoundation\Response;

    use 
    Contao\ModuleModel;
    use 
    Contao\PageModel;
    use 
    Contao\Template;
    use 
    Contao\System;
    use 
    Contao\StringUtil;
    use 
    Contao\Controller;

    /**
     * @FrontendModule("default_stats", category="test-manager")
     */
    class DefaultStatsController extends AbstractFrontendModuleController {
            
        protected function 
    getResponse(Template $templateModuleModel $modelRequest $request) : ? Response {
                        

            
    $stats "test";
            return 
    $this->render('@Contao/default_stats.html.twig', [
                
    'stats' => $stats,
                
    'mod_class' => 'mod_default_stats'
            
    ]);    
        }

    Fehler im Contao-manager


    Code:
    PHP Fatal error:  Declaration of WEBROXX\TESTManager\Controller\Frontend\DefaultStatsController::getResponse(Contao\CoreBundle\Twig\FragmentTemplate $template, Contao\ModuleModel $model, Symfony\Component\HttpFoundation\Request $request): ?Symfony\Component\HttpFoundation\Response must be compatible with Contao\CoreBundle\Controller\FrontendModule\AbstractFrontendModuleController::getResponse(Contao\CoreBundle\Twig\FragmentTemplate $template, Contao\ModuleModel $model, Symfony\Component\HttpFoundation\Request $request): Symfony\Component\HttpFoundation\Response in /www/htdocs/w018cf31/domain/vendor/webroxx/contao-test-bundle/src/Controller/Frontend/DefaultStatsController.php on line 29
    Liebe Grüße
    WebRoxx


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

    Standard

    Du musst das Fragezeichen beim Return Type entfernen.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.150

    Standard

    soweit so gut, das nächste was sich wohl geändert hjat ist das generieren der URLs im Frontent
    PHP-Code:
    $parameters = array('parameters' => $obj->alias);

    $page PageModel::findOneById($model->jumpTo);                
    $url System::getContainer()->get('contao.routing.content_url_generator')->generate($page$parameters); 
    Allerdings meldet er "Unable to generate route for page 52."
    Liebe Grüße
    WebRoxx


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

    Standard

    Dazu nutzt du einfach
    PHP-Code:
    $page->getFrontendUrl('/'.$alias
    (in egal welcher Contao Version).

    Ab Contao 5.3 kannst du aber auch den ContentUrlGenerator nutzen.
    PHP-Code:
    $url $this->contentUrlGenerator->generate($page, ['parameters' => $alias]); 
    (ungetestet)
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.150

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen

    Ab Contao 5.3 kannst du aber auch den ContentUrlGenerator nutzen.
    PHP-Code:
    $url $this->contentUrlGenerator->generate($page, ['parameters' => $alias]); 
    (ungetestet)
    okay hab es versucht

    PHP-Code:

    use Contao\CoreBundle\Routing\ContentUrlGenerator;


    public function 
    __construct(private readonly ContentUrlGenerator $urlGenerator) {}    

    $url $this->urlGenerator->generate($page, ['parameters' => $obj->alias]); 
    bleibt bei der Meldung "Unable to generate route for page ID 52."

    in der services.yml habe ich es auch drin (wenn man dies jetzt überhaupt noch muss)
    Liebe Grüße
    WebRoxx


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

    Standard

    Wie gesagt ist die zweite Variante ungetestet und du müsstest selbst mehr dazu recherchieren. Ansonsten nimm die andere Variante. Wenn weiterhin ein Fehler auftritt, musst du den Stack-Trace analysieren.
    » sponsor me via GitHub or PayPal or Revolut

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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