Contao-Camp 2024
Ergebnis 1 bis 38 von 38

Thema: Verständnisfrage zur Erweiterungsentwicklung

  1. #1
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard Verständnisfrage zur Erweiterungsentwicklung

    Hallo,

    ich versuche mich anhand der Doku eine simple Erweiterung zu erstellen, scheitere aber mal an etwas Grundsätzlichem.
    PHP-Code:
        "repositories": [
            {
                
    "type""path",
                
    "url""/path/to/your/extension/directory"
            
    }
        ] 
    Welcher Pfad ist hier gemeint? Und wie sollte diese angegeben werden?

    Ich habe eine Installation unter c:\laragon\www\dev49\ und hier unter \src\ die composer.json abgelegt.

    Meinem Verständnis nach, sofern ich die Erweiterungsdateien auch unter \src\ ablege, dann sollte es doch so lauten:
    PHP-Code:
        "repositories": [
            {
                
    "type""path",
                
    "url""c:/laragon/www/dev49/src"
            
    }
        ] 
    ... das bringt aber einen error 500

    Kann mir jemand weiterhelfen, wo mein Denkfehler ist, bzw. was denn das Erweiterungs-Verzeichnis denn tatsächlich ist.
    vielen dank
    Grüsse
    Bernhard


  2. #2
    Contao-Fan Avatar von Ainschy
    Registriert seit
    24.06.2009.
    Ort
    Wenden
    Beiträge
    793
    Partner-ID
    5666
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    \\ für Verzeichnisse
    Code:
    "url": "c:\\laragon\\www\\dev49\\src"
    und wenn es eh im gleichen Ordner liegt wie die Installation dann

    Code:
    "url": "src/vendor/bundle"

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

    Standard

    Sollte aber nicht in src/ abgelegt werden.

  4. #4
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    OK - dieser Schritt erledigt, aber ich komme trotzdem nicht weiter.

    Aktueller Aufbau:
    assets\....
    bundles\berecont\ContaoBreaklineBundle\
    config\....
    contao-manager\....
    files\....
    system\....
    templates\....
    var\....
    vendor\....
    web\....

    innerhalb von bundles\berecont\ContaoBreaklineBundle habe ich nun die Ordner und Dateien aufgebaut.
    Die Installation selbst gibt keine Fehlermeldung mehr aus und in vendor\berecont\contao-breakline-bundle\ wurde der Symlink erstellt

    Wie geht's nun weiter? Composer Installation oder Composer Update sagt, dass nichts zum Update vorhanden ist. Und im Backend erhalte ich ebenfalls kein gewünschtes Ergebnis, sprich kein CE zur Auswahl.
    Sollte zu diesem Zeitpunkt im Contao Manager meine Erweiterung schon unter 'Pakete' sichtbar sein?
    Ich habe mich einerseits an die Doku gehalten und andererseits an zwei github-Bundles mit ähnlichem Inhalt
    - https://github.com/arno1979/contao-ce-grid-break
    - https://github.com/fritzmg/contao-example-bundle

    Ich vermute, dass ich irgendwo einen Schritt vergessen habe, nur welchen?
    Muss ich zu diesem Zeitpunkt bereits über Git arbeiten?

    Das CE, welches ich im Backend auswählen möchte wird doch "nur" in /contao/dca/ erstellt, oder?
    Grüsse
    Bernhard


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

    Standard

    Da der Symlink bereits erstellt wurde, passiert bei einem weiteren composer update/install auch nichts weiter. Ohne deinen Code zu kennen, kann hier auch keine weitere Aussage getroffen werden.

  6. #6
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Danke für die Bestätigung, dass es an mir liegt
    Hast du vielleicht eine simple Erweiterung, die du mir nennen könntest, von der ich mal "abschauen" könnte. Eine die nichts anderes macht, als ein CE zur Auswahl bereitstellen und ein template im Frontend ausgibt. Mit deinem [contao-example-bundle] komm ich wohl nicht zurecht oder raff's nicht ...
    Grüsse
    Bernhard


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

    Standard

    Bisher habe ich noch keine Erweiterung gemacht, wo ein Inhaltselement oder Frontendmodul auf die neue Weise implementiert wurde - da das erst in neueren Contao Versionen geht und alle Extensions bisher mit Conato 4.4 kompatibel sind. Das einzige Beispiel, wo das der Fall ist, ist eben https://github.com/fritzmg/contao-example-bundle (welches im Zuge des Contao College Entwicklung in Contao 4 entstanden ist *Werbung* ). Welche Probleme hast du damit?

    Wenn du nach der "alten Weise" suchst, kannst du dir zB https://github.com/inspiredminds/con...ing-navigation ansehen. Da wird zwar kein Inhaltselement erzeugt, aber ein Frontendmodul.

  8. #8
    Contao-Fan Avatar von Arno
    Registriert seit
    11.12.2009.
    Ort
    Potsdam-Babelsberg
    Beiträge
    290

    Standard

    Moin,

    habe gerade gesehen, dass mein Bundle von letzter Woche erwähnt wird. Vielleicht kann ich ein bisschen helfen, habe mich ja auch sehr damit abgemüht.

    Grundsätzlich ist es ja erstmal gut, dass der Symlink erstellt wird und (hoffentlich) auch auf das richtige Verzeichnis verweist.
    Ich mache den Eintrag in der composer.json für das lokale Repositorium ehrlich gesagt immer etwas anders, da gibt es aber verschiedene Möglichkeiten.
    Nur der Vollständigkeit halber, mein Eintrag sieht so aus:
    Code:
        "repositories": [
            {
                "type": "path",
                "url": "repo/arno/*"
            }
        ],
    "repo" liegt direkt im Root der Contao Installation (also auf der gleichen Ebene wie z.B. "assets", "files", "vendor" und "web").
    Das hat den Vorteil, dass ich in "repo/arno" einfach beliebig viele lokale Bundles (jeweils in einem eigenen Unterordner) anlegen und diese dann in der composer.json mit der Versionsnummer "dev-master" laden lassen kann.

    Am Beispiel von "arno1979/contao-ce-grid-break" gibt es einen Ordner "repo/arno/contao-ce-grid-break" und da drin liegen die Dateien, wie sie auch auf Github zu sehen sind.

    Du schreibst:
    Das CE, welches ich im Backend auswählen möchte wird doch "nur" in /contao/dca/ erstellt, oder?
    Diese Frage lässt sich – wie Spooky auch schreibt – tatsächlich nicht ohne weitere Codeinhalte beantworten.
    In der DCA Datei unter "contao/dca" legst du ja erstmal nur die Palettenkonfiguration an. Du musst das System ja aber auch noch darüber informieren, dass es überhaupt ein Content Element geben soll, welches die in der DCA Konfiguration festgelegten Felder verwenden soll.

    Das kannst du auf mehreren Wegen (aber immer nur auf einem zur Zeit!) tun:

    1. Über eine Datei "contao/config/config.php
    Das ist der Contao 3 kompatible Weg, kannst du dir z.B. in der Version 1.0 meines Content Elements ansehen: https://github.com/arno1979/contao-c...fig/config.php.
    In diesem Fall liegt deine Klasse in "src/Resources/contao/elements" und wird von der Core Klasse "Contao\ContentElement" abgeleitet:
    https://github.com/arno1979/contao-c...tGridBreak.php

    2. In dem du per Dependency Injection eine services.yml einbindest (die sollte dann unter "src/Resources/config" liegen) und dort deine Klasse als Fragment Controller per Service Tagging ankündigst.
    Das kannst du in der Version 1.2 meines Content Elements nachvollziehen:
    https://github.com/arno1979/contao-c...kExtension.php
    https://github.com/arno1979/contao-c...g/services.yml

    3. Per Annotation direkt in deiner Fragment Controller Klasse. Das setzt allerdings (wenn ich richtig informiert bin) Contao 4.9 und auch eine entsprechende autowire Konfiguration in der services.yml voraus.

    Für die Varianten 2. und 3. liegt deine Klasse in "src/ContentElement" und leitet sich von "Contao\CoreBundle\Controller\ContentElement\Abstr actContentElementController" ab:
    https://github.com/arno1979/contao-c.../GridBreak.php

    Damit solltest du dann in der Lage sein dein Content Element im Backend anzulegen und – die richtigen Templates und Sprachdateien vorausgesetzt – eine Ausgabe (oder zumindest erstmal einen Fehlermeldung ) im Frontend zu erzeugen.

    Viele Grüße
    Arno

  9. #9
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Danke Arno!
    liest sich soweit nachvollziehbar - aber die letzten Stunden wieder ohne Erfolg dran "gebastelt"
    Es scheint, als würde mir irgendwo etwas fehlen, was ich nicht bedenke oder nicht verstehe - aber wahrscheinlich beides davon

    Resources/config/services.yml
    PHP-Code:
    services:
        
    _instanceof:
            
    Contao\CoreBundle\Framework\FrameworkAwareInterface:
                
    calls:
                    - [
    "setFramework", ["@contao.framework"]]

            
    Symfony\Component\DependencyInjection\ContainerAwareInterface:
                
    calls:
                    - [
    "setContainer", ["@service_container"]]

        
    berecont.breakline.ce.breakline:
          class: 
    berecont\ContaoBreaklineBundle\Controller\ContentElement\Breakline
          tags
    :
              - 
                
    namecontao.content_element
                category
    texts 
    Controller/ContentElement/Breakline.php
    PHP-Code:
    <?php

    namespace berecont\ContaoBreaklineBundle\Controller\ContentElement;

    use 
    Contao\ContentModel;
    use 
    Contao\CoreBundle\Controller\ContentElement\AbstractContentElementController;
    use 
    Contao\CoreBundle\ServiceAnnotation\ContentElement;
    use 
    Contao\Template;
    use 
    Symfony\Component\HttpFoundation\Request;
    use 
    Symfony\Component\HttpFoundation\Response;

    class 
    Breakline extends AbstractContentElementController
    {
        protected function 
    getResponse(Template $templateContentModel $modelRequest $request): ?Response
        
    {
            return 
    $template->getResponse();
        }
    }
    DependecyInjection/ContaoBreaklineExtension.php
    PHP-Code:
    <?php

    namespace berecont\ContaoBreaklineBundle\DependencyInjection;

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

    class 
    ContaoBreaklineExtension extends Extension
    {
        public function 
    load(array $mergedConfigContainerBuilder $container)
        {
            
    $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
            
    $loader->load('services.yml');
            
        }
    }
    Resources/contao/dca/tl_content.php
    PHP-Code:
    <?php

    $GLOBALS
    ['TL_DCA']['tl_content']['palettes']['ce_breakline'] = 
    '
        {type_legend},type;
    '
    ;

    Ich habe versucht nach 2 vorzugehen. Immer wieder Prod.cache erneuert, immer wieder Vergleich zu Spooky's example-bundle gesucht und eruiert - aber irgendwie erhalte ich kein CE im Backend zum Auswählen.
    Grüsse
    Bernhard


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

    Standard

    Sieh grundsätzlich korrekt aus. Das
    Code:
        _instanceof:
            Contao\CoreBundle\Framework\FrameworkAwareInterface:
                calls:
                    - ["setFramework", ["@contao.framework"]]
    
            Symfony\Component\DependencyInjection\ContainerAwareInterface:
                calls:
                    - ["setContainer", ["@service_container"]]
    brauchst du nicht unbedingt (es sei denn du verwendest das so).

    Lässt du dein Bundle auch korrekt laden?

  11. #11
    Contao-Fan Avatar von Arno
    Registriert seit
    11.12.2009.
    Ort
    Potsdam-Babelsberg
    Beiträge
    290

    Standard

    Hallo Bernhard,

    irgendwie kriegen wir das schon hin.

    Hast du Konsolenzugriff per SSH?
    Dann führe doch im Contao Root mal bitte folgenden Befehl aus und schau, ob dein Service auch korrekt registriert wurde:
    Code:
    vendor/bin/contao-console debug:container berecont
    Wenn du ohnehin auf 4.9.x entwickelst würde ich auf jeden Fall im Debug Modus arbeiten und mal im Symfony Toolbar unten im Browser schauen, ob irgendwelche Fehlermeldungen auftreten. Ist das der Fall den Meldungen nachgehen.

    Ansonsten auch noch mal – um ganz sicher zu gehen – manuell im Verzeichnis "var/cache" die beiden Ordner "dev" und "prod" löschen. Und falls da noch weitere Ordner liegen (z.B. irgendwas mit "prod-xxx" oder irgendwas entsprechendes) die auch entfernen.

    Viele Grüße
    Arno

  12. #12
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen

    Lässt du dein Bundle auch korrekt laden?
    ... wie finde ich das raus?

    ContaoManager/Plugin.php
    PHP-Code:
    <?php 

    namespace berecont\ContaoBreaklineBundle\ContaoManager;

    use 
    berecont\ContaoBreaklineBundle\ContaoBreaklineBundle;
    use 
    Contao\CoreBundle\ContaoCoreBundle;
    use 
    Contao\ManagerPlugin\Bundle\BundlePluginInterface;
    use 
    Contao\ManagerPlugin\Bundle\Config\BundleConfig;
    use 
    Contao\ManagerPlugin\Bundle\Parser\ParserInterface;

    class 
    Plugin implements BundlePluginInterface
    {
        public function 
    getBundles(ParserInterface $parser): array
        {
            return [
                
    BundleConfig::create(ContaoBreaklineBundle::class)
                    ->
    setLoadAfter([ContaoCoreBundle::class]),
            ];
        }

    }
    Grüsse
    Bernhard


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

    Standard

    Und wie sieht die composer.json aus?

  14. #14
    Contao-Fan Avatar von Arno
    Registriert seit
    11.12.2009.
    Ort
    Potsdam-Babelsberg
    Beiträge
    290

    Standard

    Zitat Zitat von derRenner Beitrag anzeigen
    ... wie finde ich das raus?
    Siehe meinen Beitrag mit dem Konsolenbefehl.

  15. #15
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Und wie sieht die composer.json aus?


    /composer.json
    PHP-Code:
    {
        
    "name""contao/managed-edition",
        
    "type""project",
        
    "description""Contao Open Source CMS",
        
    "license""LGPL-3.0-or-later",
        
    "authors": [
            {
                
    "name""Leo Feyer",
                
    "homepage""https://github.com/leofeyer"
            
    }
        ],
        
    "require": {
            
    "php""^7.1",
            
    "contao/calendar-bundle""^4.9",
            
    "contao/comments-bundle""^4.9",
            
    "contao/conflicts""*@dev",
            
    "contao/faq-bundle""^4.9",
            
    "contao/listing-bundle""^4.9",
            
    "contao/manager-bundle""4.9.*",
            
    "contao/news-bundle""^4.9",
            
    "contao/newsletter-bundle""^4.9",
            
    "do-while/contao-backupdb-bundle""^1.4",
            
    "madeyourday/contao-rocksolid-columns""^2.0",
            
    "madeyourday/contao-rocksolid-custom-elements""^2.2",
            
    "madeyourday/contao-rocksolid-frontend-helper""^2.0",
            
    "madeyourday/contao-rocksolid-icon-picker""^2.0",
            
    "madeyourday/contao-rocksolid-slider""^2.0",
            
    "madeyourday/contao-rocksolid-theme-assistant""^2.0",
            
    "omosde/contao-om-backend""^1.6",
            
    "pdir/social-feed-bundle""^2.4",
            
    "berecont/contao-breakline-bundle""dev-master"
        
    },
        
    "conflict": {
            
    "contao-components/installer""<1.3"
        
    },
        
    "extra": {
            
    "contao-component-dir""assets",
            
    "symfony": {
                
    "require""^4.4"
            
    }
        },
        
    "scripts": {
            
    "post-install-cmd": [
                
    "Contao\\ManagerBundle\\Composer\\ScriptHandler::initializeApplication"
            
    ],
            
    "post-update-cmd": [
                
    "Contao\\ManagerBundle\\Composer\\ScriptHandler::initializeApplication"
            
    ]
        },
        
    "repositories": [{
            
    "type""path",
            
    "url""bundles/berecont/ContaoBreaklineBundle"
        
    }]

    /bundles/berecont/ContaoBreaklineBundle/composer.json
    PHP-Code:
    {
        
    "name""berecont/contao-breakline-bundle",
        
    "description""Contao Content Element to add a <hr> tag",
        
    "type""contao-bundle",
        
    "require": {
            
    "contao/core-bundle""^4.9"
        
    },
        
    "license""LGPL-3.0-or-later",
        
    "authors": [
            {
                
    "name""Bernhard Renner",
                
    "email""info@berecont.at"
            
    }
        ],
        
    "autoload": {
            
    "psr-4": {
                
    "berecont\\ContaoBreaklineBundle\\""src/"
            
    }
        },
        
    "extra": {
            
    "contao-manager-plugin""berecont\\ContaoBreaklineBundle\\ContaoManager\\Plugin"
        
    }


    Hast du Konsolenzugriff per SSH?
    nein - hätt's versucht einzurichten - klappt auch nicht
    Laragon unter Windoof ...
    Grüsse
    Bernhard


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

    Standard

    Unter Windows hast du eh Konsolenzugriff Strg+R -> cmd -> Ok

  17. #17
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Unter Windows hast du eh Konsolenzugriff Strg+R -> cmd -> Ok
    ja schon, aber auch dort klappt der befehl nicht

    C:\laragon\www\dev49>vendor/bin/contao-console debug:container berecont
    Der Befehl "vendor" ist entweder falsch geschrieben oder
    konnte nicht gefunden werden.

    C:\laragon\www\dev49>
    Grüsse
    Bernhard


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

    Standard

    Steht bei dir php auf der Kommandozeile zur Verfügung?
    Code:
    php -v
    Ich würde dir aber empfehlen eine Entwicklungsumgebung wie VSCode (+ die Git Bash von Git for Windows) oder PHPStorm zu benutzen.

  19. #19
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Code:
    php -v
    bringt
    Code:
    PHP 7.2.12 (cli) (built: Nov  8 2018 06:12:12) ( ZTS MSVC15 (Visual C++ 2017) x86 )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    also schätze ich mal 'JA', php steht mir auf der Kommandozeile zur Verfügung

    Ich arbeite mit Visual Studio Code - aber dort greift das Terminal auch auf das cmd zurück.

    Ein Versuch die backslashes zu verwenden ergab folgendes - sofern das aussagekräftig ist:

    vendor\bin\contao-console debug:container berecont
    15:40:23 ERROR [console] Error thrown while running command "debug:container berecont". Message: "No services found that match "berecont"." ["exception" => Symfony\Component\Console\Exception\InvalidArgumen tException^ { …},"command" => "debug:container berecont","message" => "No services found that match "berecont"."]


    No services found that match "berecont".


    debug:container [--show-private] [--show-arguments] [--show-hidden] [--tag TAG] [--tags] [--parameter PARAMETER] [--parameters] [--types] [--env-var ENV-VAR] [--env-vars] [--format FORMAT] [--raw] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--] <command> [<name>]
    Grüsse
    Bernhard


  20. #20
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    php vendor/bin/contao-console debug:container berecont
    bringt
    dir=$(cd "${0%[/\\]*}" > /dev/null; cd "../contao/manager-bundle/bin" && pwd)

    if [ -d /proc/cygdrive ]; then
    case $(which php) in
    $(readlink -n /proc/cygdrive)/*)
    # We are in Cygwin using Windows php, so the path must be translated
    dir=$(cygpath -m "$dir");
    ;;
    esac
    fi

    "${dir}/contao-console" "$@"
    ... für mich ebenso null aussagekräftig
    Grüsse
    Bernhard


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

    Standard

    Ja stimmt, in der regulären Windows Command Line musst du natürlich Backslashes verwenden.

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

    Standard

    Deine Dateistruktur ist noch etwas unüblich und verwirren, da der Pfad deines Bundles exakt so heißt wie der Namespace Prefix. Wie lauten die vollen Pfade zu den einzelnen Dateien, relativ zum Ordner der Contao Installation?

  23. #23
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Deine Dateistruktur ist noch etwas unüblich und verwirren, da der Pfad deines Bundles exakt so heißt wie der Namespace Prefix. Wie lauten die vollen Pfade zu den einzelnen Dateien, relativ zum Ordner der Contao Installation?
    Wie wäre es üblich? Dann bau ich das ganze Konstrukt nochmals neu auf - Lerneffekt für mich und möglicherweise dann auch ein funktionierendes Ergebnis
    Grüsse
    Bernhard


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

    Standard

    Also ich mach es meistens so: ich gebe die Erweiterung gleich direkt unter vendor/ in den Unterordner, in den composer die Erweiterung dann installieren würde. Also Name des Unterordners = Name der Extension in der composer.json (= Name des Pakets auf GitHub, meistens). Der Rest bleibt gleich - Composer erkennt dann, dass der Source bereits vorhanden ist und macht nichts weiter (außer das Paket in der installed.json und composer.lock zu registrieren).

  25. #25
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich sag mal ein herzliches DANKESCHÖN!
    Schlussendlich doch noch geklappt - die wohl ausschlaggebende Info bzw. Änderung war die Namensgebungen.

    next step Versioning & Publishing ...
    Grüsse
    Bernhard


  26. #26
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Stunden später ...
    Versioning & Publishing aus der Doku
    user@somemachine ~/www/contao4/vendor/somevendor/contao-example-bundle
    $ git init
    $ git add --all
    $ git commit -m "initial commit"
    $ git remote add origin git@github.com:somevendor/contao-example-bundle.git
    $ git push origin master
    der Eintrag 'git push origin master' bringt mir nun einen error:
    C:\laragon\www\dev49\vendor\berecont\contao-breakline (master)
    ? git push -u origin master
    error: src refspec master does not match any.
    error: failed to push some refs to 'git@github.com:berecont/contao-breakline.git'
    ... ein Repository berecont/contao-breakline ist auf github angelegt.
    Muss ich in der composer.json vor dem publishing nochmals etwas ändern? lt. Doku erkenne ich da nichts.

    Und schon mal vorab: wenn ich dann das aktuelle Paket auf github hoch geladen habe, dann entwickle ich lokal weiter und schiebe dann wieder einen Stand X ident wieder auf github hoch?
    Aber mal eins nach dem anderen ... zuerst muss ich's mal auf github bringen.
    Jemand eine Idee wo ich nun wieder scheitere?
    Grüsse
    Bernhard


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

    Standard

    Ist das ein privates Repository? Weil unter https://github.com/berecont/contao-breakline ist nichts.

  28. #28
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    ja, privat.
    Grüsse
    Bernhard


  29. #29
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    einen kleinen Schritt weiter

    C:\laragon\www\dev49\vendor\berecont\contao-breakline (master)
    ? git init
    Initialized empty Git repository in C:/laragon/www/dev49/vendor/berecont/contao-breakline/.git/

    C:\laragon\www\dev49\vendor\berecont\contao-breakline (master)
    ? git add --all
    warning: LF will be replaced by CRLF in composer.json.
    The file will have its original line endings in your working directory

    C:\laragon\www\dev49\vendor\berecont\contao-breakline (master)
    ? git commit -m "initial commit"
    [master (root-commit) 7c24173] initial commit
    9 files changed, 125 insertions(+)
    create mode 100644 composer.json
    create mode 100644 src/ContaoBreaklineBundle.php
    create mode 100644 src/ContaoManager/Plugin.php
    create mode 100644 src/Controller/ContentElement/Breakline.php
    create mode 100644 src/DependencyInjection/ContaoBreaklineExtension.php
    create mode 100644 src/Resources/config/services.yml
    create mode 100644 src/Resources/contao/dca/tl_content.php
    create mode 100644 src/Resources/contao/languages/de/tl_content.php
    create mode 100644 src/Resources/contao/templates/ce_breakline.html5

    C:\laragon\www\dev49\vendor\berecont\contao-breakline (master)
    ? git remote add origin https://github.com/berecont/contao-breakline.git

    C:\laragon\www\dev49\vendor\berecont\contao-breakline (master)
    ? git push origin master
    To https://github.com/berecont/contao-breakline.git
    ! [rejected] master -> master (fetch first)
    error: failed to push some refs to 'https://github.com/berecont/contao-breakline.git'
    hint: Updates were rejected because the remote contains work that you do
    hint: not have locally. This is usually caused by another repository pushing
    hint: to the same ref. You may want to first integrate the remote changes
    hint: (e.g., 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.

    C:\laragon\www\dev49\vendor\berecont\contao-breakline (master)
    ?
    ich habe das git@github.com auf https://github.com geändert ... hänge aber ader nächsten Fehlermeldung.
    Grüsse
    Bernhard


  30. #30
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    pfff - jetzt hat's mal geklappt.

    ich versuche für Nachleser zusammenzufassen:

    nach obiger Fehlermeldung Eingabe von
    git pull origin master
    und danach
    git push origin master
    und wieder Fehlermeldung
    C:\laragon\www\dev49\vendor\berecont\contao-breakline (master)
    ? git pull origin master
    warning: no common commits
    remote: Enumerating objects: 8, done.
    remote: Counting objects: 100% (8/8), done.
    remote: Compressing objects: 100% (7/7), done.
    remote: Total 8 (delta 0), reused 0 (delta 0), pack-reused 0
    Unpacking objects: 100% (8/8), done.
    From https://github.com/berecont/contao-breakline
    * branch master -> FETCH_HEAD
    * [new branch] master -> origin/master
    fatal: refusing to merge unrelated histories

    C:\laragon\www\dev49\vendor\berecont\contao-breakline (master)
    ? git push origin master
    To https://github.com/berecont/contao-breakline.git
    ! [rejected] master -> master (non-fast-forward)
    error: failed to push some refs to 'https://github.com/berecont/contao-breakline.git'
    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Integrate the remote changes (e.g.
    hint: 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    danach folgendes eingegeben
    git push -f origin master
    und nun lief es durch
    C:\laragon\www\dev49\vendor\berecont\contao-breakline (master)
    ? git push -f origin master
    Enumerating objects: 23, done.
    Counting objects: 100% (23/23), done.
    Delta compression using up to 4 threads
    Compressing objects: 100% (14/14), done.
    Writing objects: 100% (23/23), 2.72 KiB | 398.00 KiB/s, done.
    Total 23 (delta 0), reused 0 (delta 0)
    To https://github.com/berecont/contao-breakline.git
    + dbfa3a4...7c24173 master -> master (forced update)

    C:\laragon\www\dev49\vendor\berecont\contao-breakline (master)
    ?
    Grüsse
    Bernhard


  31. #31
    Contao-Nutzer
    Registriert seit
    13.07.2013.
    Ort
    Nordsachsen
    Beiträge
    130

    Standard

    entschuldigt bitte hier eine verspätete Anmerkung...

    ich habe das https://docs.contao.org/dev/guides/back-end-routes/ jetzt mehrfach durchgearbeitet (C4.9.4) und erhalte nur Fehler...

    sollte zuerst nicht
    Code:
    namespace App\Controller;
    immer angepasst werden zu:
    Code:
    namespace MyVendorname\MyBundle\Controller;
    ?? Dazu steht aber leider keinerlei Hinweis im Guide...

    Wenn man das macht (und noch ein use korrigiert) dann hagelt es nicht mehr so viele Fehler...

    aber auch dann klappts nicht...

    ich erhalte danach:
    Code:
    Unable to find template "my_backend_route.html.twig" (looked into: /www/htdocs/*****/*****.de/vendor/knplabs/knp-menu/src/Knp/Menu/Resources/views, /www/htdocs/*****/******.de/templates).
    wer ist knplabs? und wer ist knp_menu? Das steht nicht in meinem Code und auch nicht in im Guide 4.9.x Back End Route...

    Ersetzt man dann noch im BackendController:
    Code:
        return new Response($this->twig->render(
          'my_backend_route.html.twig',
          []
        ));
    durch
    Code:
        return new Response($this->twig->render(
          '@MyVendornameMyBundle/my_backend_route.html.twig',
          []
        ));
    Sollte der Guide möglw. mal aktualisiert werden?

    OK Nachtrag:
    stöbert man nun in den Quellen, so findet sich auch eine Antwort auf knplabs in der Factory 'vendor/contao/core-bundle/src/Event/MenuEvent.php':
    Code:
    namespace Contao\CoreBundle\Event;
    
    use Knp\Menu\FactoryInterface;
    use Knp\Menu\ItemInterface;
    use Symfony\Contracts\EventDispatcher\Event;
    
    class MenuEvent extends Event
    ...
    Geändert von theobald (07.08.2020 um 14:51 Uhr)

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

    Standard

    Die Angaben in der Dokumentation beziehen sich immer auf die Anpassungen innerhalb einer Applikation. Wenn du das für eine Extension (also ein Bundle) machst, dann müssen ein paar Dinge anders gemacht werden, ja.

  33. #33
    Contao-Nutzer
    Registriert seit
    13.07.2013.
    Ort
    Nordsachsen
    Beiträge
    130

    Standard

    ok - wo steht das? in der Regel entwickelt man ja ein Bundle und schreibt nicht direkt in die Contao-Installation. Wäre es nicht günstiger, das irgendwo als Anmerkung einzufügen??

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

    Standard

    Zitat Zitat von theobald Beitrag anzeigen
    ok - wo steht das?
    In der Symfony Doku . Oder auch nicht, weil die ist was Bundle Entwicklung anbelangt leider auch sehr schlecht.



    Zitat Zitat von theobald Beitrag anzeigen
    in der Regel entwickelt man ja ein Bundle und schreibt nicht direkt in die Contao-Installation.
    Das würde ich nicht unbedingt sagen.



    Zitat Zitat von theobald Beitrag anzeigen
    Wäre es nicht günstiger, das irgendwo als Anmerkung einzufügen??
    Nachdem die Symfony Dokumentation hier auch sehr lack-luster ist wäre ein Guide für die wichtigsten Unterschiede in der Bundle Entwicklung in der Contao Entwicklerdoku sicher nicht schlecht.

  35. #35
    Contao-Nutzer
    Registriert seit
    13.07.2013.
    Ort
    Nordsachsen
    Beiträge
    130

    Standard

    ok - aber dennoch Danke!

    Wenn ich mal mehr Erfahrung habe, würde ich durchaus mal was dazu schreiben...

    Worin liegt denn der Unterschied zwischen einer App und einem Bundle? Ich wusste bisher gar nicht - muss ich jetzt zugeben - dass man auch noch neben Bundles gesonderte Apps für Contao entwickeln kann. Wie geht das? Wie werden die denn deployed oder vertrieben?

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

    Standard

    Mit "Entwicklung für die Applikation" ist gemeint, dass du eben nur für eine bestimmte Applikation entwickelst. Dafür brauchst du kein Bundle.

  37. #37
    Contao-Nutzer
    Registriert seit
    13.07.2013.
    Ort
    Nordsachsen
    Beiträge
    130

    Standard

    verstehe ich leider nicht... eine Applikation ist eine Applikation?

    Worin liegt denn der Unterschied zwischen einer Contao Applikation und einem Contao Bundle?

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

    Standard

    Eine Extension (auch Bundle genannt) ist etwas, dass du in mehreren Contao Applikationen installieren kannst.

    Entwickelst du eine Webapplikation für einen Kunden mit dem Contao Open Source CMS System, dann kannst du Applikationspezifische Dinge auch ohne Bundle umsetzen. Eben nur für diese eine Applikation.

    Siehe dazu auch die kurze Einleitung hier: https://docs.contao.org/dev/getting-...g-development/

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
  •