Ergebnis 1 bis 34 von 34

Thema: Routing über routes.yaml Hilfe

  1. #1
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard Routing über routes.yaml Hilfe

    Hi Ihr alle,
    langsam bin ich am verzweifeln. Mir gelingt es nicht eine route über routes.yaml einzustellen. Seit 2 Tagen suche ich rum und sehe vor lauter Bäumen den Wald nicht.
    Kann mir jemand helfen.

    Contao 4.13.40

    Ich bekomme beim Cache erstellen,bzw. beim Aktualisieren meiner Extension die Fehlermeldung:

    There is no extension able to load the configuration for "pbdkn_efgco4.controller" (in "C:\wampneu\www\co4\Github B
    undles\contao-efg-bundle\src\DependencyInjection/../Resources/config\routes.yaml").
    Looked for namespace "pbdkn_efgco4.controller", found "none".

    Die Extension funktioniert. Ich wollte noch eine Route einfügen die ich im Backend aufrufe.
    Die Route soll vom Backend aus gerufen werden.

    Die Directinjection wird aufgerufen.

    die Autoload Einträge
    'Pbdkn\\Efgco4\\ContaoManager\\Plugin' => __DIR__ . '/..' . '/pbd-kn/contao-efg-bundle/src/ContaoManager/Plugin.php',
    'Pbdkn\\Efgco4\\Controller\\Ajax\\EfgRequestClass' => __DIR__ . '/..' . '/pbd-kn/contao-efg-bundle/src/Controller/Ajax/EfgRequestClass.php',
    'Pbdkn\\Efgco4\\DependencyInjection\\PbdknContaoEf gco4Extension' => __DIR__ . '/..' . '/pbd-kn/contao-efg-bundle/src/DependencyInjection/PbdknContaoEfgco4Extension.php',

    Der Dump der Routen via
    vendor\bin\contao-console debug:router
    zeigt die Route nicht an.

    Mein routes.yaml sieht so aus
    # config/routes.yaml liegt in src/Resources/config.yaml

    PHP-Code:
    pbdkn_efgco4.controller:
        
    resource: ../../Controller
        type
    annotation 
    mein controller liegt in src/Controller/Ajax
    der Controller selbst sieht so aus

    PHP-Code:
    [B]namespace Pbdkn\Efgco4\Controller\Ajax[/B];

    use 
    Contao\ContentModel;
    use 
    Contao\CoreBundle\Framework\ContaoFramework;
    use 
    Symfony\Component\Routing\Annotation\Route;
    use 
    Contao\CoreBundle\InsertTag\InsertTagParser;
    use 
    Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    use 
    Contao\FilesModel;
    use 
    Contao\StringUtil;
    use 
    Contao\DcaUtil;
    use 
    Doctrine\DBAL\Connection;
    use 
    Doctrine\DBAL\Driver\Exception as DoctrineDBALDriverException;
    use 
    Doctrine\DBAL\Exception as DoctrineDBALException;
    use 
    Symfony\Component\HttpFoundation\JsonResponse;
    use 
    Symfony\Component\HttpFoundation\Response;
    use 
    Symfony\Component\HttpFoundation\Session\SessionInterface;
    use 
    Symfony\Contracts\Translation\TranslatorInterface;


    class 
    EfgRequestClass extends AbstractController
    {
        private 
    ContaoFramework $framework;
        private 
    Connection $connection
            
        public function 
    __constructContaoFramework $frameworkConnection $connection)
        {
            
    $this->framework $framework;
            
    $this->connection $connection;
        } 
        
    /**
         * @throws \Exception
         * @Route('/efg/reloadFiletree/{aktion}/{strtable}/{name}/{value}', 
         * name="EfgRequestClass::class\reloadFiletree", 
         * defaults={"_scope" = "backend"})
         */


      
    public function reloadFiletree(string $aktionstring $strtablestring $name,string $value)
      {
            ...
            return new 
    Response('pbd reloadFiletree EfgRequestClass');
      }

    in der Directinjection
    lade ich zum Test die routes.yaml
    PHP-Code:
    class PbdknContaoEfgco4Extension extends Extension
    {
        public function 
    load(array $configsContainerBuilder $container): void
        
    {
            
    $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
            
    $loader->load('services.yaml');
            
    $loader->load('routes.yaml');       // Hier kommt der Fehler der in die routes.yaml zeigt
        
    }

    Über jeden Tipp bin ich dankbar

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

    Standard

    Routes lässt du über das RoutingPluginInterface laden, nicht über die Dependency Injection Extension.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    459

    Standard

    Spooky hat es schon beantwortet aber:

    Für dich und alle in der Zukunft:

    /config/routes.yaml
    https://github.com/oveleon/contao-co...tes.yaml#L1-L3

    /src/ContaoManager/Plugin.phpl
    https://github.com/oveleon/contao-co...in.php#L42-L48

    Generell kann man sich aus der contao-cookiebar die folgenden configs abschauen (obwohl es eigentlich in der Symfony-Doku dokumentiert ist )
    • commands.yaml
    • listener.yaml
    • routes.yaml
    • services.yaml

  4. #4
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard

    Hallo,
    es funktioniert imme noch nicht.
    Mir ist nicht klar da in dem Beispile unter routes.yaml
    PHP-Code:
    cookiebar:
        
    resource'../src/Controller'
        
    typeannotation 
    steht
    der Namespace der Erweiterung aber

    namespace Oveleon\ContaoCookiebar\Controller
    ist

    weshalb es dann in der routes.yaml
    cookiebar:
    steht

    und

    Oveleon\ContaoCookiebar\Controller

    wo stehe ich da uaf dem Schlauch

    Wie und wo wird cookiebar: für die routes.yaml festgelegt

  5. #5
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard

    Hier nochmals meine Konfiguration

    PHP-Code:
    # config/routes.yaml

    Pbdkn\Efgco4\Controller:                                  #????????? was ist hier der richtige Eintrag   ??????????????????
        
    resource'../src/Controller'
        
    typeannotation 
    mein Plugin
    PHP-Code:
    namespace Pbdkn\Efgco4\ContaoManager;

    use 
    Contao\CoreBundle\ContaoCoreBundle;
    use 
    Contao\ManagerPlugin\Bundle\BundlePluginInterface;
    use 
    Contao\ManagerPlugin\Bundle\Config\BundleConfig;
    use 
    Contao\ManagerPlugin\Bundle\Parser\ParserInterface;
    use 
    Oveleon\ContaoCookiebar\ContaoCookiebar;
    use 
    Contao\ManagerPlugin\Routing\RoutingPluginInterface;
    use 
    Symfony\Component\Config\Loader\LoaderResolverInterface;
    use 
    Symfony\Component\HttpKernel\KernelInterface;
    use 
    Pbdkn\Efgco4\PbdknContaoEfgco4Bundle;

    class 
    Plugin implements BundlePluginInterface
    {
        public function 
    getBundles(ParserInterface $parser)
        {
            return [
                
    BundleConfig::create(PbdknContaoEfgco4Bundle::class)
                    ->
    setLoadAfter([ContaoCoreBundle::class])
                    ->
    setReplace(['efg']),        ];
        }
        public function 
    getRouteCollection(LoaderResolverInterface $resolverKernelInterface $kernel)
        {
            return 
    $resolver
                
    ->resolve(__DIR__.'/../../config/routes.yaml')
                ->
    load(__DIR__.'/../../config/routes.yaml')
                ;
        }

    meine Autoload
    'Pbdkn\\Efgco4\\ContaoManager\\Plugin' => __DIR__ . '/..' . '/pbd-kn/contao-efg-bundle/src/ContaoManager/Plugin.php',
    'Pbdkn\\Efgco4\\Controller\\Ajax\\EfgRequestClass' => __DIR__ . '/..' . '/pbd-kn/contao-efg-bundle/src/Controller/Ajax/EfgRequestClass.php',


    mein Controller
    PHP-Code:
    namespace Pbdkn\Efgco4\Controller\Ajax;

    use 
    Contao\ContentModel;
    use 
    Contao\CoreBundle\Framework\ContaoFramework;
    use 
    Contao\CoreBundle\InsertTag\InsertTagParser;
    use 
    Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    use 
    Contao\FilesModel;
    use 
    Contao\StringUtil;
    use 
    Contao\DcaUtil;
    use 
    Doctrine\DBAL\Connection;
    use 
    Doctrine\DBAL\Driver\Exception as DoctrineDBALDriverException;
    use 
    Doctrine\DBAL\Exception as DoctrineDBALException;
    use 
    Symfony\Component\HttpFoundation\JsonResponse;
    use 
    Symfony\Component\HttpFoundation\Response;
    use 
    Symfony\Component\Routing\Annotation\Route;
    use 
    Symfony\Component\HttpFoundation\Session\SessionInterface;
    use 
    Symfony\Contracts\Translation\TranslatorInterface;


    class 
    EfgRequestClass extends AbstractController
    {
        private 
    ContaoFramework $framework;
        private 
    Connection $connection
        private 
    InsertTagParser $insertTagParser
        private 
    TranslatorInterface $translator;
        private 
    CgiUtil $cgiUtil
        private 
    EfgUtil $efgUtil


            
        public function 
    __construct(
          
    ContaoFramework $framework,
          
    Connection $connection,
          
    InsertTagParser $insertTagParser,
          
    TranslatorInterface $translator,
          
    CgiUtil $cgiUtil,
          
    EfgUtil $efgUtil      
          
    )
        {
            
    $this->framework $framework;
            
    $this->connection $connection;
            
    $this->insertTagParser=$insertTagParser
            
    $this->translator=$translator;
            
    $this->cgiUtil=$cgiUtil;
            
    $this->efgUtil=$efgUtil;
            
    //parent::__construct($strTable);
        

        
    /**
         * @throws \Exception
         * @Route('/efg/reloadFiletree/{aktion}/{strtable}/{name}/{value}', 
         * name="EfgRequestClass::class\reloadFiletree", 
         * defaults={"_scope" = "frontend"})
         */


      
    public function reloadFiletree(string $aktionstring $strtablestring $name,string $value)
      {
            return new 
    Response('pbd reloadFiletree EfgRequestClass');
      }

    Danke für die Hilfe

  6. #6
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    459

    Standard

    PHP-Code:
        public function getBundles(ParserInterface $parser): array
        {
            return [
                
    BundleConfig::create(ContaoCookiebar::class)
                    ->
    setLoadAfter([ContaoCoreBundle::class])
                    ->
    setReplace(['cookiebar']),
            ];
        }

        
    /**
         * {@inheritdoc}
         */
        
    public function getRouteCollection(LoaderResolverInterface $resolverKernelInterface $kernel)
        {
            return 
    $resolver
                
    ->resolve(__DIR__.'/../../config/routes.yaml')
                ->
    load(__DIR__.'/../../config/routes.yaml')
                ;
        } 
    BundleConfig::create(ContaoCookiebar::class)
    ->setLoadAfter([ContaoCoreBundle::class])
    ->setReplace(['cookiebar']),

    In deinem Fall also efg
    PHP-Code:
    efg:
        
    resource'../src/Controller'
        
    typeannotation 

  7. #7
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard

    hi,
    ich habe die routes.yaml geändert
    PHP-Code:
    # config/routes.yaml

    efg:
        
    resource'../src/Controller'
        
    typeannotation 
    nach meinem "beschränktem" Wissen ist die Anweisung
    ->setReplace(['efg'])

    nur beim Ersatz von contao 3 Erweiterungen notwendig. Ich habe es nur abgeschrieben. Aber egal.

    Aber es funktioniert immer noch nicht in meinem Routesdump erscheint die Route nicht.
    Was muss ich angeben wenn ich die Anweisung
    ->setReplace(['efg'])
    einfach weglasse.


    Hier mein Ausschrieb vom debug route
    PHP-Code:


    :\wampneu\www\co4\websites\heike>vendor\bin\contao-console debug:router
     
    ------------------------------------------ -------- -------- ------ -------------------------------------------------------
      
    Name                                       Method   Scheme   Host   Path
     
    ------------------------------------------ -------- -------- ------ -------------------------------------------------------
      
    cookiebar_block                            ANY      ANY      ANY    /cookiebar/block/{locale}/{id}
      
    cookiebar_prepare                          ANY      ANY      ANY    /cookiebar/{module}/{id}
      
    GalleryCreatorAjax::class\getImage         ANY      ANY      ANY    /_gallery_creator/get_image/{pictureId}/{contentId}
      
    GalleryCreatorAjax::class\getImagesByPid   ANY      ANY      ANY    /_gallery_creator/get_images_by_pid/{pid}/{contentId}
      
    contao_install                             ANY      ANY      ANY    /contao/install
      contao_backend                             ANY      ANY      ANY    
    /contao
      contao_backend_login                       ANY      ANY      ANY    
    /contao/login
      contao_backend_logout                      ANY      ANY      ANY    
    /contao/logout
      contao_backend_password                    ANY      ANY      ANY    
    /contao/password
      contao_backend_confirm                     ANY      ANY      ANY    
    /contao/confirm
      contao_backend_file                        ANY      ANY      ANY    
    /contao/file
      contao_backend_help                        ANY      ANY      ANY    
    /contao/help
      contao_backend_page                        ANY      ANY      ANY    
    /contao/page
      contao_backend_popup                       ANY      ANY      ANY    
    /contao/popup
      contao_backend_alerts                      ANY      ANY      ANY    
    /contao/alerts
      contao_backend_picker                      ANY      ANY      ANY    
    /contao/picker
      contao_backend_preview                     ANY      ANY      ANY    
    /contao/preview
      contao_backend_switch                      ANY      ANY      ANY    
    /contao/preview_switch
      contao_frontend_captcha                    ANY      ANY      ANY    
    /_contao/captcha/{_locale}
      
    contao_core_favicon__invoke                ANY      ANY      ANY    /favicon.ico
      contao_frontend_cron                       ANY      ANY      ANY    
    /_contao/cron
      contao_frontend_share                      ANY      ANY      ANY    
    /_contao/share
      contao_frontend_logout                     ANY      ANY      ANY    
    /_contao/logout
      contao_frontend_check_cookies              ANY      ANY      ANY    
    /_contao/check_cookies
      contao_frontend_request_token_script       ANY      ANY      ANY    
    /_contao/request_token_script
      contao_initialize                          ANY      ANY      ANY    
    /_contao/initialize
      contao_preview_link                        ANY      ANY      ANY    
    /_contao/preview/{id}
      
    contao_core_robotstxt__invoke              ANY      ANY      ANY    /robots.txt
      contao_core_sitemap__invoke                ANY      ANY      ANY    
    /sitemap.xml
      contao_images                              ANY      ANY      ANY    
    /assets/images/{path}
      
    contao_backend_redirect                    ANY      ANY      ANY    /contao/
      
    tl_page.4.root                             ANY      http     ANY    /
      
    tl_page.410                                ANY      http     ANY    /info/ausstellungen{!parameters}.html
      tl_page.87                                 ANY      http     ANY    
    /person/vita{!parameters}.html
      tl_page.243                                ANY      http     ANY    
    /abmelden{!parameters}.html
      tl_page.323                                ANY      http     ANY    
    /allgemeines{!parameters}.html
      tl_page.240                                ANY      http     ANY    
    /anfrage-detail{!parameters}.html
      tl_page.300                                ANY      http     ANY    
    /anhaengerketten{!parameters}.html 

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

    Standard

    Ist dein Code öffentlich verfügbar?
    » sponsor me via GitHub or PayPal or Revolut

  9. #9
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    459

    Standard

    Wie schon in vielen Plugins erwähnt, nur Teil des Codes wird nicht helfen, daher stimme ich Spooky hier zu.
    Meist sieht man es auf Anhieb, wenn das gesamte Konstrukt existiert.

    Gerade bei der routes.yaml ist es wichtig, dass hier die Pfade und Namespaces stimmen.
    Deine Ordnerstruktur muss passend sein + die Dependeny Injection auch funktionieren.

    Eventuell ist es auch etwas kleines wie Groß- und Kleinschreibung oder ein Spelling-Error :/

  10. #10
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard

    ich habe in gerade hochgeladebn

    https://github.com/pbd-kn/contao-efg-bundle.git

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

    Standard

    Deine Ordnerstruktur passt aktuell nicht ganz. Du hast einen Ordner "config" direkt im Root - aber dann zusätzlich auch einen Ordner "src/Resources". Du musst dich für eines davon entscheiden und dann je nach dem folgendes beachten: https://docs.contao.org/dev/getting-...ing-the-bundle
    Wenn du /src/Resources nutzen möchtest, dann verschiebst du den aktuellen Ordner config nach src/Resources. Wenn du /config nutzt möchtest, dann verschiebst du alles aus /src/Resources in den Root Ordner und wendest die getPath() Methoden wie beschrieben in deiner Bundle Klasse an.
    » sponsor me via GitHub or PayPal or Revolut

  12. #12
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard

    Hi Danke für den Hinweis.

    Das istr grnau die Struktur, die ich ursprünglich hatte, es hat leider nicht funktioniert.
    Ich habe jetzt wieder auf /src/Resources/config umgestellt.
    die extesion ist aktualisiert unter github

    es sieht jetzt so aus

    PHP-Code:
    # src/Resources/config/routes.yaml

    #Pbdkn\Efgco4\Controller:
    #pbdkn_efgco4_controller:    das sind alles meine Versuche  auch mit efg: geht es nicht
    efg:
        
    resource: ../../Controller
        type
    annotation 
    Hier nochmals mein debug mit route
    PHP-Code:

    C
    :\wampneu\www\co4\websites\heike>vendor\bin\contao-console debug:router
     
    ------------------------------------------ -------- -------- ------ -------------------------------------------------------
      
    Name                                       Method   Scheme   Host   Path
     
    ------------------------------------------ -------- -------- ------ -------------------------------------------------------
      
    cookiebar_block                            ANY      ANY      ANY    /cookiebar/block/{locale}/{id}
      
    cookiebar_prepare                          ANY      ANY      ANY    /cookiebar/{module}/{id}
      
    GalleryCreatorAjax::class\getImage         ANY      ANY      ANY    /_gallery_creator/get_image/{pictureId}/{contentId}
      
    GalleryCreatorAjax::class\getImagesByPid   ANY      ANY      ANY    /_gallery_creator/get_images_by_pid/{pid}/{contentId}
      
    contao_install                             ANY      ANY      ANY    /contao/install
      contao_backend                             ANY      ANY      ANY    
    /contao
      contao_backend_login                       ANY      ANY      ANY    
    /contao/login
      contao_backend_logout                      ANY      ANY      ANY    
    /contao/logout
      contao_backend_password                    ANY      ANY      ANY    
    /contao/password
      contao_backend_confirm                     ANY      ANY      ANY    
    /contao/confirm
      contao_backend_file                        ANY      ANY      ANY    
    /contao/file
      contao_backend_help                        ANY      ANY      ANY    
    /contao/help
      contao_backend_page                        ANY      ANY      ANY    
    /contao/page
      contao_backend_popup                       ANY      ANY      ANY    
    /contao/popup
      contao_backend_alerts                      ANY      ANY      ANY    
    /contao/alerts
      contao_backend_picker                      ANY      ANY      ANY    
    /contao/picker
      contao_backend_preview                     ANY      ANY      ANY    
    /contao/preview
      contao_backend_switch                      ANY      ANY      ANY    
    /contao/preview_switch
      contao_frontend_captcha                    ANY      ANY      ANY    
    /_contao/captcha/{_locale}
      
    contao_core_favicon__invoke                ANY      ANY      ANY    /favicon.ico
      contao_frontend_cron                       ANY      ANY      ANY    
    /_contao/cron
      contao_frontend_share                      ANY      ANY      ANY    
    /_contao/share
      contao_frontend_logout                     ANY      ANY      ANY    
    /_contao/logout
      contao_frontend_check_cookies              ANY      ANY      ANY    
    /_contao/check_cookies
      contao_frontend_request_token_script       ANY      ANY      ANY    
    /_contao/request_token_script
      contao_initialize                          ANY      ANY      ANY    
    /_contao/initialize
    .....
     
    tl_page.9                                  ANY      http     ANY    /schmuck{!parameters}.html
      tl_page.5                                  ANY      http     ANY    
    /start{!parameters}.html
      tl_page.91                                 ANY      http     ANY    
    /templateartikel{!parameters}.html
      tl_page.141                                ANY      http     ANY    
    /testseite{!parameters}.html
      tl_page.130                                ANY      http     ANY    
    /vielen-dank{!parameters}.html
      tl_page.391                                ANY      http     ANY    
    /werkstatt{!parameters}.html
      tl_page.445                                ANY      http     ANY    
    /zum-shop.html
      tl_page.4                                  ANY      http     ANY    
    /heike-besslich-startpunkt{!parameters}.html
      tl_page.437
    .error_404                      ANY      http     ANY    /{_url_fragment}
     ------------------------------------------ -------- -------- ------ ------------------------------------------------------- 

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

    Standard

    Du lässt in deinem Contao Manager Plugin keine Routes laden. Siehe https://community.contao.org/de/show...l=1#post583311
    » sponsor me via GitHub or PayPal or Revolut

  14. #14
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard

    Hi,
    irgendwie verstehe ich das nicht, sorry

    ich habe nun meine routes.yaml in

    src/Resources/config/routes.yaml
    PHP-Code:
    # src/Resources/config/routes.yaml

    #Pbdkn\Efgco4\Controller:
    #pbdkn_efgco4_controller:
    efg:                                 # ???????????????????????????????????????????????
        
    resource: ../../Controller
        type
    annotation 
    so hattest Du es mir empfohlen.

    Jetzt der Hinweis
    Du lässt in deinem Contao Manager Plugin keine Routes laden. Siehe https://community.contao.org/de/show...l=1#post583311

    wie und was muss ich da im plugin machen, wie geschieht das??

    ist damit das in Plugin gemeint. In anderen Projekten musste ich das auch nicht machen.

    public function getRouteCollection(LoaderResolverInterface $resolver, KernelInterface $kernel)
    {
    return $resolver
    ->resolve(__DIR__.'/../../src/Resources/config/routes.yaml')
    ->load(__DIR__.'/../../src/Resources/config/routes.yaml')
    ;
    }

    LG
    Peter

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

    Standard

    Ja, wie schon erwähnt lässt du deine Routes in einer Extension für die contao/managed-edition über das Contao Manager Plugin laden - über das RoutingPluginInterface.
    » sponsor me via GitHub or PayPal or Revolut

  16. #16
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    459

    Standard

    Zitat Zitat von pbdkn Beitrag anzeigen
    ist damit das in Plugin gemeint
    Ja

    Wie in deinem Post hier erwähnt, hattest du es schon drinne, hast es aber entfernt:
    https://community.contao.org/de/show...l=1#post583402

  17. #17
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    459

    Standard

    Siehe: https://github.com/oveleon/contao-co...in.php#L42-L48

    Code:
    namespace Pbdkn\Efgco4\ContaoManager;
    
    use Contao\CoreBundle\ContaoCoreBundle;
    use Contao\ManagerPlugin\Bundle\BundlePluginInterface;
    use Contao\ManagerPlugin\Bundle\Config\BundleConfig;
    use Contao\ManagerPlugin\Bundle\Parser\ParserInterface;
    use Contao\ManagerPlugin\Routing\RoutingPluginInterface;
    use Symfony\Component\Config\Loader\LoaderResolverInterface;
    use Symfony\Component\HttpKernel\KernelInterface;
    use Pbdkn\Efgco4\PbdknContaoEfgco4Bundle;
    
    class Plugin implements BundlePluginInterface, RoutingPluginInterface
    {
        public function getBundles(ParserInterface $parser)
        {
            return [
                BundleConfig::create(PbdknContaoEfgco4Bundle::class)
                    ->setLoadAfter([ContaoCoreBundle::class])
                    ->setReplace(['efg']),        ];
        }
        public function getRouteCollection(LoaderResolverInterface $resolver, KernelInterface $kernel)
        {
            return $resolver
                ->resolve(__DIR__.'/../../config/routes.yaml')
                ->load(__DIR__.'/../../config/routes.yaml')
                ;
        }
    } 
        /**
         * {@inheritdoc}
         */
        public function getRouteCollection(LoaderResolverInterface $resolver, KernelInterface $kernel)
        {
            return $resolver
                ->resolve(__DIR__.'/../../config/routes.yaml')
                ->load(__DIR__.'/../../config/routes.yaml')
                ;
        }
    }

  18. #18
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard

    Hi,
    ich weiß ich bin lästig. Irgendwei vertehe ich das alles nicht.

    Nach bestem Wissen und Info habe ich alles eingebracht. Es funktioniert halt nicht.
    Ich habe gerade den aktuellen Stand nochmals auf github gebracht.
    https://github.com/pbd-kn/contao-efg-bundle.git

    Vielleicht kannst Du nochmals drauf schauen.

    Danke für die Geduld
    Peter

  19. #19
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    459

    Standard

    Schau einfach nur, dass du das RoutingPluginInterface auch implementierst, siehe:
    https://github.com/pbd-kn/contao-efg.../pull/21/files
    Geändert von zoglo (15.04.2024 um 14:31 Uhr)

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

    Standard

    Zitat Zitat von pbdkn Beitrag anzeigen
    Hi,
    ich weiß ich bin lästig. Irgendwei vertehe ich das alles nicht.

    Nach bestem Wissen und Info habe ich alles eingebracht. Es funktioniert halt nicht.
    Ich habe gerade den aktuellen Stand nochmals auf github gebracht.
    https://github.com/pbd-kn/contao-efg-bundle.git

    Vielleicht kannst Du nochmals drauf schauen.

    Danke für die Geduld
    Peter
    Du hast immer noch nicht das Interface implementiert.
    » sponsor me via GitHub or PayPal or Revolut

  21. #21
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard

    Hi ihr alle,
    ich danke euch vielmals für die Geduld. (ich würde Euch gerne zu einem Bier einladen)
    Ich stand völlig auf dem Schlauch, jetzt funktioniert es super.

    Eine letzte Frage noch der Aufruf im Plugin

    ->setReplace(['efg'])

    ich war immer der Meinung das ist ein Relikt für die Kompatibilität zu Contao 3.
    Ich kann also damit das Label in der routes.yaml festlegen. Gilt das dann auch in services.yaml

    Danke wenn ihr wollt könnt ihr mir antworten. Sonst ist es auch ok.

    LG
    Peter

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

    Standard

    Zitat Zitat von pbdkn Beitrag anzeigen
    Eine letzte Frage noch der Aufruf im Plugin

    ->setReplace(['efg'])

    ich war immer der Meinung das ist ein Relikt für die Kompatibilität zu Contao 3.
    Damit definierst du, dass deine Extension diese Extension ersetzt (falls beide installiert sind).
    » sponsor me via GitHub or PayPal or Revolut

  23. #23
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard

    Hi ich bin es nochmals,
    Nachdem ich das Routing jetzt geht bekomme ich beim Upgrade des Bundles die Meldung

    > @php vendor/bin/contao-setup --no-ansi

    In AbstractRecursivePass.php line 168:

    Invalid service "Pbdkn\Efgco4\PbdknContaoEfgco4Bundle": class has no constructor.


    Script @php vendor/bin/contao-setup --no-ansi handling the post-install-cmd event returned with error code 1
    # Process terminated with exit code 1

    Pbdkn\Efgco4\PbdknContaoEfgco4Bundle sieht doch ganz normal aus
    warum wird das überhaupt aufgerufen

    PHP-Code:
    namespace Pbdkn\Efgco4;

    use 
    Symfony\Component\HttpKernel\Bundle\Bundle;

    class 
    PbdknContaoEfgco4Bundle extends Bundle
    {

    services.yaml wird in der DirectIncetion geladen
    PHP-Code:
    namespace Pbdkn\Efgco4\DependencyInjection;

    use 
    Symfony\Component\Config\FileLocator;
    use 
    Symfony\Component\DependencyInjection\ContainerBuilder;
    use 
    Symfony\Component\DependencyInjection\Extension\Extension;
    use 
    Symfony\Component\DependencyInjection\Loader\YamlFileLoader;


    class 
    PbdknContaoEfgco4Extension extends Extension
    {
        public function 
    load(array $configsContainerBuilder $container): void
        
    {
            
    $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
            
    $loader->load('services.yaml');
        }

    Meine Services.yaml sieht so aus
    PHP-Code:
    services:
        
    _defaults:
            
    autoconfiguretrue
            autowire
    true
            
    public: true


        
        Pbdkn
    \Efgco4\:
            
    resource: ../../
            
    exclude: ../../{DependencyInjection,Resources,Model,EventListener,ContaoManager}
            
    arguments:
                
    $framework'@contao.framework'
                
    $connection'@database_connection'
                
    $cgiUtil'@Pbdkn\Efgco4.cgi_util'
                
    $efgUtil'@Pbdkn\Efgco4.efg_util' 
    Kann mir jemand helfen?

    Danke

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

    Standard

    Du gibst aktuell allen Services in deinem Namespace die selben Constructor Arguments. Das musst du aus deiner services.yaml wieder entfernen.
    » sponsor me via GitHub or PayPal or Revolut

  25. #25
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard

    Das stimmt schon,
    Wenn ich aber die Argumente weglasse bekomme ich beim Aufruf der Route

    http://heike.local/efg/reloadFiletre...ble/name/value

    The controller for URI "/efg/reloadFiletree/aktion/strtable/name/value" is not callable: Controller "Pbdkn\Efgco4\Controller\Ajax\EfgRequestClass" has required constructor arguments and does not exist in the container. Did you forget to define the controller as a service?

    wie gebe ich da die Parameter an

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

    Standard

    Damit du DI für Controller nutzen kannst, musst du den Controller Service mit dem controller.service_arguments Tag taggen. Dazu musst du den Controller Service entweder explizit definieren, oder eine separate Resource Loading Anweisung einfügen, ähnlich wie hier erwähnt: https://docs.contao.org/dev/getting-...nd-controllers
    Alternativ kannst du ab PHP 8.1 (und Symfony 5.4) auch das #[AsController] PHP Attribut nutzen.
    » sponsor me via GitHub or PayPal or Revolut

  27. #27
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard

    Danke mal,
    ich habe php 8.1
    Kenne mich aber mit den Anotationen nicht so aus.
    wo muss ich das
    #[AsController]
    unterbringen.

    Kann ich dann das Laden von services.yaml weglassen in der DI

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

    Standard

    Zitat Zitat von pbdkn Beitrag anzeigen
    Kann ich dann das Laden von services.yaml weglassen in der DI
    Nein, services musst du dennoch registrieren.
    » sponsor me via GitHub or PayPal or Revolut

  29. #29
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard

    wo muss ich das
    #[AsController]
    unterbringen

  30. #30
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard

    nochmals,
    wenn meine service.yaml jetzt so aussieht.

    bekomme ich die Meldung
    Expected to find class "Pbdkn\Efgco4\Controller\Controller\Ajax\EfgReques tClass" in file "C:\wampneu\www\co4\Github
    Bundles\contao-efg-bundle\src\Controller\Ajax\EfgRequestClass.php" while importing services from resource "../../"
    , but it was not found! Check the namespace prefix used with the resource.

    Pbdkn\Efgco4\Controller\Controller

    gibt es natürlich nicht

    PHP-Code:
    services:
        
    _defaults:
            
    autoconfiguretrue
            autowire
    true
            
    public: true
        
        Pbdkn
    \Efgco4\Controller\:
            
    resource: ../../
            
    tags: ['controller.service_arguments']
            
    exclude: ../../{DependencyInjection,Resources,Model,EventListener,ContaoManager

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

    Standard

    Der Pfad für das Resource Loading deiner Controller Services ist falsch. Deine Controller befinden sich ja vermutlich Im Unterordner Controller. Außer dem hast du dort jetzt Unterordner exkludiert, die dort vermutlich gar nicht existieren. Darüber hinaus lässt du jetzt deine anderen Services nicht mehr laden (aber evt. brauchst du das auch nicht, wenn du keine hast).
    » sponsor me via GitHub or PayPal or Revolut

  32. #32
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard

    Hi
    ich verstehe einfach viel zu wenig

    Neue Meldung

    In FileLoader.php line 224:

    Expected to find class "PBDKN\Efgco4\Ajax\EfgRequestClass" in file "C:\wampneu\www\co4\Github Bundles\contao-efg-bu
    ndle\src\Controller\Ajax\EfgRequestClass.php" while importing services from resource "../../Controller", but it was
    not found! Check the namespace prefix used with the resource.

    Soeben habe ich das Bundle nach github geladen.

    https://github.com/pbd-kn/contao-efg-bundle.git

    wenn Du Zeit und Lust hast schau es dir doch ma an.

    Ich will doch nur die Route

    /**
    * @throws \Exception
    * @Route("/efg/reloadFiletree/{aktion}/{strtable}/{name}/{value}",
    * name="EfgRequestClass::class\reloadFiletree",
    * defaults={"_scope" = "frontend"})
    */

    aufrufen. Das machen doch sicher viele.
    Ich kapiere das nicht

  33. #33
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard

    Sorry verflixte Groß und Kleinschreibung PBDKN statt Pbdkn

  34. #34
    Contao-Nutzer
    Registriert seit
    09.05.2021.
    Ort
    Konstanz
    Beiträge
    43

    Standard

    So ist es wohl richtig services.yaml oder gibt es da Verbesserungen??
    PHP-Code:
    services:
        
    _defaults:
            
    autoconfiguretrue
            autowire
    true
            
    public: true
        
        Pbdkn
    \Efgco4\:
            
    resource: ../../
            
    exclude: ../../{DependencyInjection,Resources,Model}

            
        
    Pbdkn\Efgco4\Controller\Ajax\EfgRequestClass:
            
    tags:
                - { 
    namecontroller.service_arguments }
            public: 
    true 

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

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