Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Extbase/Fluid - RootPaths

      
  1. #1
    Forum Zuschauer
    Registriert seit
    19.04.2011
    Beiträge
    4

    Böse Extbase/Fluid - RootPaths

    Moin moin Damen und Herren,

    ich entwickel momentan meine Erste Extension auf Basis von Extbase. Soweit alles super. Konzept macht Spaß usw... Doch mich quält jetzt seit einiger Zeit folgende Frage:

    Wie weise ich Typo3 an im Backend-Modul das unter EXT:kjr_resmngr/Resources/Private/Backend/ zu verwenden und nicht wie im Frontend-Plugin unter EXT:kjr_resmngr/Resources/Private/ ???

    Ich stocher schon eine Weile hier rum..

    Ich habe die Extensionen mit dem Extbase Kickstarter losgetreten und bekomme von Anfang an, wenn ich im Backend-Menu auf das Modul klicke, nicht die in Resources/Private/Backend/ befindlichen Templates angeboten.

    ext_tables.php
    PHP-Code:
    <?php
    if (!defined ('TYPO3_MODE')){
        die (
    'Access denied.');
    }

    Tx_Extbase_Utility_Extension::registerPlugin(
        
    $_EXTKEY,
        
    'Kjr_resmngr_fe',
        
    'Ressourcenmanager'
    );

    //$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY . '_kjr_resmngr_fe'] = 'pi_flexform';
    //t3lib_extMgm::addPiFlexFormValue($_EXTKEY . '_kjr_resmngr_fe', 'FILE:EXT:' . $_EXTKEY . '/Configuration/FlexForms/flexform_kjr_resmngr_fe.xml');




    if (TYPO3_MODE === 'BE') {

        
    /**
        * Registers a Backend Module
        */
        
    Tx_Extbase_Utility_Extension::registerModule(
            
    $_EXTKEY,
            
    'user',     // Make module a submodule of 'user'
            
    'kjr_resmngr_tool',    // Submodule key
            
    '',                        // Position
            
    array(
                
    'Ressources' => 'list, show, new, create, edit, update, delete',
                
    'User' => 'list, show, new, create, edit, update, delete',
                
    'Bookings' => 'list, show, new, create, edit, update, delete',
            ),
            array(
                
    'access' => 'user,group',
                
    'icon'   => 'EXT:' $_EXTKEY '/ext_icon.gif',
                
    'labels' => 'LLL:EXT:' $_EXTKEY '/Resources/Private/Language/locallang_kjr_resmngr_tool.xml',
            )
        );

    }


    t3lib_extMgm::addStaticFile($_EXTKEY'Configuration/TypoScript''user_KjrResmngrKjrResmngrTool');


    t3lib_extMgm::addLLrefForTCAdescr('tx_kjrresmngr_domain_model_user''EXT:kjr_resmngr/Resources/Private/Language/locallang_csh_tx_kjrresmngr_domain_model_user.xml');
    t3lib_extMgm::allowTableOnStandardPages('tx_kjrresmngr_domain_model_user');
    $TCA['tx_kjrresmngr_domain_model_user'] = array(
        
    'ctrl' => array(
            
    'title'                => 'LLL:EXT:kjr_resmngr/Resources/Private/Language/locallang_db.xml:tx_kjrresmngr_domain_model_user',
            
    'label'             => 'name',
            
    'tstamp'             => 'tstamp',
            
    'crdate'             => 'crdate',
            
    'dividers2tabs' => true,
            
    'versioningWS'         => 2,
            
    'versioning_followPages'    => TRUE,
            
    'origUid'             => 't3_origuid',
            
    'languageField'     => 'sys_language_uid',
            
    'transOrigPointerField'     => 'l10n_parent',
            
    'transOrigDiffSourceField'     => 'l10n_diffsource',
            
    'delete'             => 'deleted',
            
    'enablecolumns'     => array(
                
    'disabled' => 'hidden',
                
    'starttime' => 'starttime',
                
    'endtime' => 'endtime',
                ),
            
    'dynamicConfigFile' => t3lib_extMgm::extPath($_EXTKEY) . 'Configuration/TCA/User.php',
            
    'iconfile'             => t3lib_extMgm::extRelPath($_EXTKEY) . 'Resources/Public/Icons/tx_kjrresmngr_domain_model_user.gif'
        
    ),
    );

    t3lib_extMgm::addLLrefForTCAdescr('tx_kjrresmngr_domain_model_ressources''EXT:kjr_resmngr/Resources/Private/Language/locallang_csh_tx_kjrresmngr_domain_model_ressources.xml');
    t3lib_extMgm::allowTableOnStandardPages('tx_kjrresmngr_domain_model_ressources');
    $TCA['tx_kjrresmngr_domain_model_ressources'] = array(
        
    'ctrl' => array(
            
    'title'                => 'LLL:EXT:kjr_resmngr/Resources/Private/Language/locallang_db.xml:tx_kjrresmngr_domain_model_ressources',
            
    'label'             => 'title',
            
    'tstamp'             => 'tstamp',
            
    'crdate'             => 'crdate',
            
    'dividers2tabs' => true,
            
    'versioningWS'         => 2,
            
    'versioning_followPages'    => TRUE,
            
    'origUid'             => 't3_origuid',
            
    'languageField'     => 'sys_language_uid',
            
    'transOrigPointerField'     => 'l10n_parent',
            
    'transOrigDiffSourceField'     => 'l10n_diffsource',
            
    'delete'             => 'deleted',
            
    'enablecolumns'     => array(
                
    'disabled' => 'hidden',
                
    'starttime' => 'starttime',
                
    'endtime' => 'endtime',
                ),
            
    'dynamicConfigFile' => t3lib_extMgm::extPath($_EXTKEY) . 'Configuration/TCA/Ressources.php',
            
    'iconfile'             => t3lib_extMgm::extRelPath($_EXTKEY) . 'Resources/Public/Icons/tx_kjrresmngr_domain_model_ressources.gif'
        
    ),
    );

    t3lib_extMgm::addLLrefForTCAdescr('tx_kjrresmngr_domain_model_bookings''EXT:kjr_resmngr/Resources/Private/Language/locallang_csh_tx_kjrresmngr_domain_model_bookings.xml');
    t3lib_extMgm::allowTableOnStandardPages('tx_kjrresmngr_domain_model_bookings');
    $TCA['tx_kjrresmngr_domain_model_bookings'] = array(
        
    'ctrl' => array(
            
    'title'                => 'LLL:EXT:kjr_resmngr/Resources/Private/Language/locallang_db.xml:tx_kjrresmngr_domain_model_bookings',
            
    'label'             => 'status',
            
    'tstamp'             => 'tstamp',
            
    'crdate'             => 'crdate',
            
    'dividers2tabs' => true,
            
    'versioningWS'         => 2,
            
    'versioning_followPages'    => TRUE,
            
    'origUid'             => 't3_origuid',
            
    'languageField'     => 'sys_language_uid',
            
    'transOrigPointerField'     => 'l10n_parent',
            
    'transOrigDiffSourceField'     => 'l10n_diffsource',
            
    'delete'             => 'deleted',
            
    'enablecolumns'     => array(
                
    'disabled' => 'hidden',
                
    'starttime' => 'starttime',
                
    'endtime' => 'endtime',
                ),
            
    'dynamicConfigFile' => t3lib_extMgm::extPath($_EXTKEY) . 'Configuration/TCA/Bookings.php',
            
    'iconfile'             => t3lib_extMgm::extRelPath($_EXTKEY) . 'Resources/Public/Icons/tx_kjrresmngr_domain_model_bookings.gif'
        
    ),
    );

    ?>
    Configuratoin/TypoScript/constants.txt
    plugin.tx_kjrresmngr {
    view {
    # cat=plugin.tx_kjrresmngr/file; type=string; label=Path to template root (FE)
    templateRootPath = EXT:kjr_resmngr/Resources/Private/Templates/
    # cat=plugin.tx_kjrresmngr/file; type=string; label=Path to template partials (FE)
    partialRootPath = EXT:kjr_resmngr/Resources/Private/Partials/
    # cat=plugin.tx_kjrresmngr/file; type=string; label=Path to template layouts (FE)
    layoutRootPath = EXT:kjr_resmngr/Resources/Private/Layouts/
    }
    persistence {
    # cat=plugin.tx_kjrresmngr//a; type=int+; label=Default storage PID
    storagePid =
    }
    }


    module.tx_kjrresmngr {
    view {
    # cat=module.tx_kjrresmngr/file; type=string; label=Path to template root (BE)
    templateRootPath = EXT:kjr_resmngr/Resources/Private/Backend/Templates/
    # cat=module.tx_kjrresmngr/file; type=string; label=Path to template partials (BE)
    partialRootPath = EXT:kjr_resmngr/Resources/Private/Backend/Partials/
    # cat=module.tx_kjrresmngr/file; type=string; label=Path to template layouts (BE)
    layoutRootPath = EXT:kjr_resmngr/Resources/Private/Backend/Layouts/
    }
    }Configuratoin/TypoScript/setup.txt
    plugin.tx_kjrresmngr {
    view {
    templateRootPath = {$plugin.tx_kjrresmngr.view.templateRootPath}
    partialRootPath = {$plugin.tx_kjrresmngr.view.partialRootPath}
    layoutRootPath = {$plugin.tx_kjrresmngr.view.layoutRootPath}
    }
    persistence {
    storagePid = {$plugin.tx_kjrresmngr.persistence.storagePid}
    }
    }

    plugin.tx_kjrresmngr._CSS_DEFAULT_STYLE (
    input.f3-form-error {
    background-color:#FF9F9F;
    border: 1px #FF0000 solid;
    }

    .tx-kjrresmngr-pi1 table {
    border-collapse:separate;
    border-spacing:10px;
    }

    .tx-kjrresmngr-pi1 table th {
    font-weight:bold;
    }

    .tx-kjrresmngr-pi1 table td {
    vertical-align:top;
    }
    )



    # Module configuration
    module.tx_kjrresmngr {
    persistence < plugin.tx_kjrresmngr.persistence
    view {
    templateRootPath = {$module.tx_kjrresmngr.view.templateRootPath}
    partialRootPath = {$module.tx_kjrresmngr.view.partialRootPath}
    layoutRootPath = {$module.tx_kjrresmngr.view.layoutRootPath}
    }
    }Änderungen bei den Pfadangaben innerhalb von constants.txt hat 0 Wirkung. Wo existiert noch ein Hebel?

    Bei Einfällen besten Dank im Voraus!!

    Gruß,
    redmord

  2. #2
    Forum Zuschauer
    Registriert seit
    20.04.2011
    Alter
    31
    Beiträge
    8

    Frage Gleiches Problem...

    ...ich schließe mich der Frage an. Bin auch gerade dabei, ein Backendmodul zu schreiben und habe das Modul im Extbase-Kickstarter als BE-Modul angelegt. Allerdings scheint auch bei mir der Pfad zu den Ordnern .../Private/Backend/... völlig ignoriert zu werden.

    Um die Templates dennoch nutzen zu können, verschafft es Abhilfe, alles im Ordner Backend enthaltene (also die Ordner Templates, Partials und Layout inkl. enthaltener Dateien) eine Verzeichnisebene nach oben zu schieben/kopieren, also in den Ordner Private.

    Aber das ist ja sicher nicht im Sinne der Erfinder, oder? Haben wir eine Einstellung übersehen? Oder stimmt die Vorgehensweise vielleicht nicht?

    Ratsuchenderweise,
    ayb.

  3. #3
    Forum Zuschauer
    Registriert seit
    19.04.2011
    Beiträge
    4
    Um die Templates dennoch nutzen zu können, verschafft es Abhilfe, alles im Ordner Backend enthaltene (also die Ordner Templates, Partials und Layout inkl. enthaltener Dateien) eine Verzeichnisebene nach oben zu schieben/kopieren, also in den Ordner Private.
    Das ist zwar ein Workaround, wenn man ausschließlich ein Backend-Modul entwickelt, doch sobald man eine Extension entwickelt, die sowohl Backend-Modul als auch Frontend-Plugin anbieten soll und hierfür unterschiedliche Templates nutzen möchte, haut dieser Workaround nicht hin. :(

    Nach dem Buch "Extensionentwicklung ab TYPO3 4.3 - Eine Einführung in Extbase und Fluid" von Martin Helmich, Mittwald CM Service wird davon ausgegangen, dass Resources/Private/Backend automatisch im Falle eines Backend-Moduls angesprochen wird.
    Auch Helmich nutzt den Extbase Kickstarter, jedoch eine ältere Version.

  4. #4
    Forum Zuschauer
    Registriert seit
    20.04.2011
    Alter
    31
    Beiträge
    8
    Da hast du natürlich Recht. Hast du es mal mit der älteren Version getestet?

    Ich bin mir nicht mehr sicher (habe das Buch gerade nicht zur Hand), aber wenn ich mich recht erinnere, nennt er dort sein Backend-Modul einfach "Backend", oder? Oder war das in der Mittwald-Doku?
    Das brachte jedenfalls bei mir zusätzliche Verwirrung auf, da der Name einem standardmässigen Extbase-convention-Begriff gleicht.

  5. #5
    Forum Zuschauer
    Registriert seit
    19.04.2011
    Beiträge
    4
    Zitat Zitat von allyourbase Beitrag anzeigen
    Da hast du natürlich Recht. Hast du es mal mit der älteren Version getestet?

    Ich bin mir nicht mehr sicher (habe das Buch gerade nicht zur Hand), aber wenn ich mich recht erinnere, nennt er dort sein Backend-Modul einfach "Backend", oder? Oder war das in der Mittwald-Doku?
    Das brachte jedenfalls bei mir zusätzliche Verwirrung auf, da der Name einem standardmässigen Extbase-convention-Begriff gleicht.
    Ich verwende v0.9.0. Neben einigen kleinen Bugs, für eine Alpha ja nichts überraschendes, ist der neue Kickstarter extrem mächtig.

    Ich werde wohl eine neue Extension ohne Kickstarter lostreten und Stück für Stück Inhalte aus dem Kickstart übernehmen. Trial & Error.
    Schade eigentlich. Ich hatte gehofft nicht zu extrem in Extbase eintauchen zu müssen, um die MVC-Vorteile nutzen zu können.

    Gruß,
    redmord

  6. #6
    Forum Zuschauer
    Registriert seit
    20.04.2011
    Alter
    31
    Beiträge
    8
    Hi,

    das hier kam vorhin in der Typo3-dev-Mailinglist, könnte interessant sein:
    extbase_kickstarter seems to be renamed to extension_builder (at least the project)
    So:
    "git clone git://git.typo3.org/TYPO3v4/Extensions/extension_builder.git extbase_kickstarter" did the trick for me

    The Forge page also moved: http://forge.typo3.org/projects/exte...nsion_builder/
    Habe mir die Version jetzt mal ausgecheckt und werde mal schauen, was da die Unterschiede sind. Vielleicht klappt's ja damit. Also, vielleicht noch nicht aufgeben. ;-)

    .edit:
    Grad gesehen, die Versionsnummer ist die gleiche...

  7. #7
    Forum Zuschauer
    Registriert seit
    19.04.2011
    Beiträge
    4
    Ich habe ein Workaround gefunden. Statt einen anderen RootPath für Backend-Templates im Seteup des jeweiliglen Moduls zu definieren kann man im Setup des eigentlichen Website-Templates für Module Konfigurationen vornehmen.
    Ich habe also für das Frontend andere Paths gesetzt und nutze im Backend die Templates unter /Resources/Private/

    In meinem Beispiel sieht es dann so aus:
    plugin.tx_kjrresmngr.view.templateRootPath = EXT:kjr_resmngr/Resources/Private/Frontend/Templates/
    plugin.tx_kjrresmngr.view.layoutRootPath = EXT:kjr_resmngr/Resources/Private/Frontend/Layouts/
    plugin.tx_kjrresmngr.view.partialRootPath = EXT:kjr_resmngr/Resources/Private/Frontend/Partials/

  8. #8
    Forum Zuschauer
    Registriert seit
    20.04.2011
    Alter
    31
    Beiträge
    8
    Stimmt, die Möglichkeit gibt's auch noch.


    Ich habe jetzt erstmal das Modul als Frontendplugin entwickelt; das bringt in auch noch den Vorteil, dass das Generieren von Formularen wesentlich einfacher ist.

    Dennoch hoffe ich ja noch ein bisschen auf eine Erklärung diesbezüglich. Ein Stück weit habe ich ja immernoch die Verrmutung, dass ich/wir irgendwas übersehen haben. Kann mir nicht vorstellen, dass eine derart prominent in Extbase positionierte Funktion ein Bug ist oder eine falsche Funktionsweise einbaut...

  9. #9
    Forum Zuschauer
    Registriert seit
    20.04.2011
    Alter
    31
    Beiträge
    8
    Hallo redmord,

    ich habe jetzt - mehr durch Zufall als alles andere - herausgefunden, wo das Problem liegt: es sitzt mal wieder vorm Rechner. ;)
    Durch Vergleichen mit den Vorgehensweisen anderer liess sich das Problem nicht lokalisieren, da wir (bzw. ich jedenfalls) immer nur _in_ der Extension verglichen habe(n) und das Drumherum dabei völlig ausser Acht gelassen habe(n).

    Folgendes: in der ext_tables.php includest du das setup.txt File:
    Code:
    // include the setup.txt file
    t3lib_extMgm::addStaticFile($_EXTKEY, 'Configuration/TypoScript', 'ext-name setup');
    Damit ist das Setup verfügbar und du kannst alles in der Setup.txt eintragen, was du willst. Auch so Sachen wie page.includeCSS.fileBlabla = EXT:... sollten gehen, wenn du jetzt noch in dein Root Template gehst, dort den vollständigen Datensatz bearbeitest und unter den Includes bei 'include static' deine Extension auswählst, für die du den Eintrag in der setup.txt vorgenommen hast (hier wäre das 'ext-name setup').

    Wenn du jetzt dein Modul neu aufrufst, wirst du sehen, dass alle Einstellungen übernommen werden, die unter Resources/Backend/Template/....html vorgenommen wurden.

    So, ich hoffe, du liest hier noch mit und mein Erfolg ist auch noch für andere Leser gut. ;)

    Best regards,
    ayb.

    [edit]Vielleicht kannst du im 1. Post hier nochmal ein Edit machen und vor den Titel ein [gelöst] setzen. Denke mal, dass sicher noch der eine oder andere (Anfänger) über das Problem stolpern wird und sich freut, wenn er gleich sieht, dass die Lösung gefunden wurde. Ausserdem lässt sich so gut googeln, indem man das Problem mit zusätzlich noch 'gelöst' als Suchwort verwendet... wird ja in vielen Foren mittlerweile gemacht :)[/edit]

  10. #10
    Forum Zuschauer
    Registriert seit
    27.09.2012
    Beiträge
    2

    AW: Extbase/Fluid - RootPaths

    Bessere Lösung:

    Datei ext_typoscript_setup.txt in deinem Ext-Verzeichnis anlegen (typo3conf/ext/<deine_ext>/ext_typoscript_setup.txt).
    Darin deine Module-Configuration aus der constants.txt unterbringen:

    Code:
    module.tx_kjrresmngr {
      view {
            # cat=module.tx_kjrresmngr/file; type=string; label=Path to template root (BE)
        templateRootPath = EXT:kjr_resmngr/Resources/Private/Backend/Templates/
            # cat=module.tx_kjrresmngr/file; type=string; label=Path to template partials (BE)
        partialRootPath = EXT:kjr_resmngr/Resources/Private/Backend/Partials/
            # cat=module.tx_kjrresmngr/file; type=string; label=Path to template layouts (BE)
        layoutRootPath = EXT:kjr_resmngr/Resources/Private/Backend/Layouts/
      }
    }
    Der entsprechende Teil kann dann theoretisch auch aus der constants.txt entfernt werden.

    Mit dieser Speziellen Datei kann auf das "Include Static" im Root-Template wie in @allyourbase's Vorschlag verzichtet werden. Es ist auch keine Änderung an der ext_localconf.php bzw. ext_tables.php notwendig.

    Getest mit Typo3 4.7.

    EDIT: Ja, ein sehr alter Beitrag, aber ich bin auf der Suche nach einer Lösung, für das immer noch bestehende Problem, hier vorbei gekommen und hoffe zukünftig anderen Suchenden damit zu helfen.

 

 
Seite 1 von 2 12 LetzteLetzte

Aktive Benutzer

Aktive Benutzer

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

Facebook Kommentare

Ähnliche Themen

  1. Extbase/Fluid JS Dateien einbinden wie?
    Von typonewbe im Forum Extension modifizieren oder neu erstellen
    Antworten: 5
    Letzter Beitrag: 28.02.2012, 17:22
  2. Extbase/Fluid: TCA Daten an Controller übergeben für form.select?
    Von typonewbe im Forum Extension modifizieren oder neu erstellen
    Antworten: 4
    Letzter Beitrag: 24.04.2011, 17:52
  3. extbase/fluid - Sortierung 1:n Relation
    Von caplod im Forum Alle anderen Extensions
    Antworten: 1
    Letzter Beitrag: 31.03.2011, 15:06
  4. ..kann geloescht werden..
    Von .m4isy im Forum TYPO3 4.x Fragen und Probleme
    Antworten: 0
    Letzter Beitrag: 23.12.2009, 05:12

Stichworte

Berechtigungen

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237