2016-08-09 11 views
1

私はTypo3 7.6.10 Extbase Builderを使用しています。 私は、拡張子を作成して、1つのコントローラを持つモデルを持っています。 私のコントローラには2つのアクションがあります。 list();searchbar();Typo3 7 Extbase Actions FlexForm

これで、開始するアクションを追加するときにバックエンドで選択します。私はこのオプションをすることはできません。 FlexFormオプションについて、そしてswitchableControllerActionsについて聞いたことがあります。

しかし、私はこれを行うことはできません。ドキュメントは、例えばhttps://wiki.typo3.org/Extension_Development,_using_Flexforms#Create_Your_Extension

悪いです:t3lib_extMgm

廃止されましたがこれを行うにはどのように有効な例ですか?

答えて

1

.xmlファイルを作成します。私は規約がないことを知っていますが、あなたのエクステンションのプラグインタイプごとに別々のファイルが必要なので、プラグインと同じ名前を付けることをお勧めします。

typo3conf/ext/extensionkey/Configuration/FlexForms/Pluginname.xml 

xmlファイルはそうのように、選択型オプションとしてキーswitchableControllerActionsで少なくともTCEFORM構造を含める必要があります。

<?xml version="1.0" encoding="UTF-8"?> 
<T3DataStructure> 
    <sheets> 
     <general> 
      <ROOT> 
       <TCEforms> 
        <sheetTitle>Display type</sheetTitle> 
       </TCEforms> 
       <type>array</type> 
       <el> 
        <switchableControllerActions> 
         <TCEforms> 
          <label>Display</label> 
          <config> 
           <type>select</type> 
           <items type="array"> 
            <numIndex index="1" type="array"> 
             <numIndex index="0">List</numIndex> 
             <numIndex index="1">Controller->list</numIndex> 
            </numIndex> 
            <numIndex index="2" type="array"> 
             <numIndex index="0">Search bar</numIndex> 
             <numIndex index="1">Controller->searchbar</numIndex> 
            </numIndex> 
           </items> 
          </config> 
         </TCEforms> 
        </switchableControllerActions> 
       </el> 
      </ROOT> 
     </general> 
    </sheets> 
</T3DataStructure> 

次に、ファイルを登録して、バックエンドでFlexformを認識させます。変数$pluginSignatureを書き留めます。パターンはextension_pluginnameと一致する必要があります。それに応じてプラグイン名を定義する必要があります。

$extensionName = strtolower(\TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToUpperCamelCase($_EXTKEY)); 
$pluginSignature = $extensionName.'_'.$pluginName; 

//... 

// Register FlexForm Configuration 
$TCA['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform'; 
ExtensionManagementUtility::addPiFlexFormValue(
    $pluginSignature, 
    'FILE:EXT:'.$_EXTKEY.'/Configuration/FlexForms/Pluginname.xml' 
); 

最後に、システムキャッシュをフラッシュするとよいです。設定オプションがプラグイン設定で表示されるはずです。定義されたswitchableControllerActions値は、プラグインインスタンスの標準アクションを置き換えます。

ただし、いくつか注意する点があります。定義したアクションが、許可されたcacheableControllerActionの組み合わせに置き換わることに注意してください。

<numIndex index="1" type="array"> 
    <numIndex index="0">List</numIndex> 
    <numIndex index="1">Controller->list;Controller->show</numIndex> 
</numIndex> 
+1

ありがとう:あなたの拡張機能がある場合はそのようなので、extample、このプラグインのインスタンスの別のアクションshow()のために、1つは追加する必要があります。 $ TCA ['tt_content'] ['types'] ['list'] ['subtypes_addlist'] [$ pluginSignature] = 'pi_flexform'; – psiess

+1

良い点、私はそれを逃した、答えを更新します。 – j4k3

+1

PHPコードはext_tables.phpに挿入する必要があります –