2017-05-04 12 views
0

バックエンド拡張機能を作成し、fe_userを4つの追加フィールドで作成しました。フロントエンドでカスタムTCAフィールドが表示されない

私はTYPO3 7.6.13を使用しています。

カスタムフィールドはバックエンドリストに表示されますが、フロントエンドでは使用できません。

私のフィールドで拡張する必要がある「特別な」リストはありますか?私のTCAの構成は次のとおりです。

ExtensionManagementUtility::addTCAcolumns('fe_users', $temporaryColumns); 
ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'field1', '', 'after:image'); 
ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'field2', '', 'after:field1'); 
ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'field3', '', 'after:field2'); 
ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'field4', '', 'after:field3'); 
ExtensionManagementUtility::addToAllTCAtypes(
    'fe_users', 
    'field1, field2, field3, field4' 
); 

さらにいくつかのバグで実行したのですか?

+0

私にとって、あなたの拡張機能の「フロントエンド」の部分が何であるかを正確に明確ではありません。あなたはFluidテンプレートで出力されるべきFrontendUsersのextbaseモデルを持っていますか?上のコードをどのファイルに置きましたか?あなたが 'Configuration/TCA/Overrides/fe_users.php'に置いたと仮定します。フィールド1〜フィールド4を行1に追加しましたが、コード例の行5にも追加しました。 Apptantly vtiger _...フィールドを追加した別のカスタム拡張があります。なぜなら、それらはTYPO3のデフォルトフィールドではないからです。 –

+0

申し訳ありませんが、私はそれについて明確ではありませんでした。私はvtigerのものを編集しました、それは質問の間違いでした。 FrontendUsers用のエクストラベースモデルと、出力用の流体テンプレートがあります。私が抱えている問題は、フィールド1,2,3,4は利用できないということです。 abobeコードはConfiguration/TCA/Overrides/fe_users.phpに置かれます。 5行目は不要ですか? – lufi

+0

データベーステーブルfe_usersを 'field1' ...に拡張しましたか? –

答えて

1

folllowingステップが必要とされている既存のextbaseモデルを拡張するには、次の

  • を設定/ TCA /上書き/ table_name.phpにTCAにフィールドを追加ext_tables.sql
  • でデータベースに
  • をフィールドを追加します。

これは、TYPO3バックエンド内のフィールドを使用するのに十分なはずです。あなたの必要性、さらに2つのステップをレンダリングするフロントエンド用 :

  • Extbaseモデル(プロパティ、ゲッターとセッターを)延長
  • のTypoScriptを使用して新しいモデルを使用するようにextbase教える:config.tx_extbase.persistence.classes

限り私は最初の3つのステップを行ったことを理解していますが、最後のステップを逃した可能性がありますか?

全例(ext_typoscript_setup.txt、通常のTypoScriptファイルでも動作するはずです):

config.tx_extbase { 
    persistence { 
     classes { 
      TYPO3\CMS\Extbase\Domain\Model\FrontendUser { 
       subclasses { 
        0 = YourVendor\YourextNamespace\Domain\Model\YourClass 
       } 
      } 
     } 
    } 
} 

これは、多くのテーブルのための十分なはずですが、fe_usersrecordTypeフィールドを使用しています。

config.tx_extbase { 
    persistence { 
     classes { 
     YourVendor\YourextNamespace\Domain\Model\YourClass { 
      mapping { 
       tableName = fe_users 
       recordType = 0 
      } 
     } 
    } 
} 

この力はrecordTypeを無視し、常にあなたのモデルを使用するextbase:これを設定するには、(config.tx_extbase設定と同じファイル)次のTypoScriptスニペットを必要とします。

ドキュメント/(recordType説明を含む)全例:https://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/5-modeling-the-class-hierarchy.html

+0

ext_typoscript_setup.txtは魅力的でした! awsome - thx m8! :) – lufi

0

フィールドをモデルに追加する必要があります。あなたのドメインには、実際のfe_userテーブルにマップされるfe_userリポジトリがあります。

フィールドをfe_userに追加する場合は、フィールドをfe_userモデルにも追加する必要があります。

あなたはそれについて考えましたか?

+0

こんにちはステファン、はい。私はすべての4つのフィールドのモデルを作成しました。クラス/ドメイン/モデル/ FrontendUser.php。どちらも、セッターとゲッター。それが私が不思議に思う理由です。私は、必然的に欠けているものを見ることができません。 – lufi

関連する問題