Uwaga! Od sierpnia 2017 forum jest w trybie tylko do odczytu.

Dlaczego? Dlatego, że społeczność TYPO3 przeniosła się na slack'a i stackoverflow:
  • Przeczytaj artykuł wprowadzający do slacka, w którym dowiesz gdzie i jak się zarejestrować.
  • Jeżeli masz pytania odnośnie Polskiej Społeczności TYPO3 zapraszamy na kanał slack'a #community-pl. Rozmawiamy tam w języku polskim.
  • Pytania dotyczące samego TYPO3 zadawaj po angielsku na stackoverflow oznaczając je tagiem "typo3". Następnie posługując się linkiem do tego pytania postaraj się zachęcić ludzi z kanału slack'a #typo3-cms lub bardziej pasujących kanałów tematycznych, żeby na nie odpowiedzieli.
  • Możesz też oczywiście zadawać pytania na slacku bez zakładania wątków na stackoverflow, ale wówczas wiedza ta nie jest indeksowana przez googla i część osób nie będzie chciała Ci z tego powodu pomagać.
  • Dla części osób dzielących się wiedzą ważne jest też budowanie reputacji na stackoverflow. Jest to kolejny powód dla którego powinieneś zadawać pytania na stackoverflow by zwiększyć swoje szanse na znalezienie odpowiedzi. Pamiętaj, żeby oceniać odpowiedzi!
Tematy bez nowych odpowiedzi

Ładowanie FlexForma w pluginie na TYPO3 6.2.x


Autor Wiadomość
Napisane: 19.06.2014 [14:19]
Sokrates
Twórca tematu
zarejestrowany: 19.06.2014
Posty: 5
Czy coś się zmieniło w wersji 6.2.x w ładowaniu FlexFormów na własnych pluginach?

Moja struktura katalogów w moim pluginie wygląda tak:
http://i.imgur.com/8EQpMaB.png

W pliku 'ext_tables.php' na początku mam taki wpis:
TYPOSCRIPT
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
	$_EXTKEY,
	'Lfshopproducts',
	'Shop Products'
);
 
$extensionName = \TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToUpperCamelCase($_EXTKEY);
$pluginSignature = strtolower($extensionName) . '_pi1';
 
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_excludelist'][$pluginSignature] = 'layout,recursive,select_key,pages';
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue($pluginSignature, 'FILE:EXT:' . $_EXTKEY . '/Configuration/FlexForms/flexform_list.xml');
 
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript', 'Shop Products');
 
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('tx_lfshopproducts_domain_model_product', 'EXT:lfshopproducts/Resources/Private/Language/locallang_csh_tx_lfshopproducts_domain_model_product.xlf');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_lfshopproducts_domain_model_product');


Mój plik 'flexform_list.xml' wygląda tak:
TYPOSCRIPT
<T3DataStructure>
  <ROOT>
    <type>array</type>
      <el>
        <settings.mode>
          <TCEforms>
	    <label>Mode</label>
	    <config>
	      <type>select</type>
		<items type="array">
		  <numIndex index="0" type="array">
		    <numIndex index="0">Events list</numIndex>
		    <numIndex index="1">1</numIndex>
		  </numIndex>
		  <numIndex index="1" type="array">
		    <numIndex index="0">Terms list</numIndex>
		    <numIndex index="1">2</numIndex>
		  </numIndex>
                </items>
                <minitems>1</minitems>
                <maxitems>1</maxitems>
                <size>1</size>
                <default>0</default>
           </config>
        </TCEforms>
      </settings.mode>
    </el>
  </ROOT>
</T3DataStructure>


i mimo czyszczenia Cachu "Flush frontend caches" i "Flush general caches"
a nawet w "Install tool" w zakładce "Important actions" klikałem "Clear all cache" i "Clear PHP opcode cache" to cały czas nie widzę tego FlexForma w moim Pluginie.

http://i.imgur.com/EhPfT5x.png

O co chodzi?
Coś się pozmieniało od wersji TYPO3 4.5.x w ładowaniu FlexFormów?
Zastanawia mnie ta linijka w 'ext_tables.php':

TYPOSCRIPT
$pluginSignature = strtolower($extensionName) . '_pi1';


Może tam nie powinno być '_pi1', wcześniej w pluginach był katalog 'pi1' a klasa pluginu ładującego nazywała się 'class.tx_[NAZWA_PLUGINU]_pi1.php' , ale teraz z 'extbase' i 'fluidem' nie ma czegoś takiego.

Plugin robił za pomocą rozszerzenia 'extension_builder' i na początku nie było w nim FlexFormu, jego dodałem ręcznie już przy zainstalowanym pluginie, ale to chyba nie powinno robić znaczenia.
Zwłaszcza że odinstalowałem go i zainstalowałem z powrotem i nic to nie zmieniło.
Upgrade'owałem TYPO3 z 6.2.1 na 6.2.3 i też to nic nie zmieniło.
I już mi nic nie przychodzi do głowy co tu może być nie tak...
Ktoś może ma jakiś pomysł?
Wielkie dzięki za pomoc.
Napisane: 20.06.2014 [11:14]
Sokrates
Twórca tematu
zarejestrowany: 19.06.2014
Posty: 5
Dla potomnych.
Okazało się że jeśli w registerPlugin jest podana nazwa 'Lfshopproducts'

TYPOSCRIPT
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
	$_EXTKEY,
	'Lfshopproducts',
	'Shop Products'
);


to w $pluginSignature nie może być nazwa '_pi1' tylko też musi zostać użyta ta sama nazwa 'lfshopproducts'.

Czyli poprawne rozwiązanie wygląda tak:

TYPOSCRIPT
$pluginSignature = strtolower($extensionName) . '_lfshopproducts';