0

私の記録の 1 つの TCA フィールドは次のとおりです。

'page_id' => array(
            'exclude' => 0,
            'label' => 'LLL:EXT:calendar/Resources/Private/Language/locallang_db.xlf:tx_calendar_domain_model_display.page_id',
            'config' => array(
                'type' => 'user',
                'userFunc' => 'EXT:calendar/class.tx_calendars_tca.php:tx_calendars_tca->someWizard',
            ),

関数someWizardは次のようになります。

    function someWizard($PA, $fObj) {


        $content='<select>' .
                '<option value="One" > item 1 </option>' .
                '<option value="Two" > item 2 </option>' .
                '<option value="Three" > item 55 </option>' .
                '</select>';


        return $content;
}

選択リストはバックエンド フォームに正常にレンダリングされますが、保存時に何も保存されません。リストが表示されているが、値が設定されていない可能性があります。

編集:

いくつかの条件と処理を使用して、すべてのページのタイトルをドロップダウン リストに取得しようとしています。私がやろうと思っていることの疑似コードはこのようなものです.(私はまだリストに多くの処理をする必要があります)

function someWizard($PA, $fObj) {


                $GLOBALS['TYPO3_DB']->debugOutput = TRUE;
                $formField='<select>';  
                 $PA['fieldConf']['config']['type'] = 'select';

                try{
                    $where='is_siteroot=1';
                    $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*','pages',$where);
                    while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                        $formField.='<option value='.$row['uid'].'>'.$row['title'].'</option>';
                    }
                }

                catch(Exception $e){
                    echo $e;
                }


                $formField.='</select>';
                return $formField;

    }

私の TCA では、'type' => 'select'何もレンダリングされません。

4

2 に答える 2

0

使用しているコードには、もちろんセレクターが表示されます。このコンストラクトがデータを保存できる場合でも、保管場所に関する少なくともいくつかの基本情報を提供する必要があります。したがって、「選択」の少なくとも「名前」属性はクールです。

フィールド タイプをユーザーではなく「select」に変更し、itemsProcFunc を使用して使用可能なアイテムの配列を操作する必要があります。

詳細については、こちらをご覧ください: http://docs.typo3.org/typo3cms/TCAReference/

于 2013-05-30T13:29:43.430 に答える
0

要素には名前がないため、保存する機会はありません。リスト内の項目のみを変更したい場合は、Joey の回答を参照してください。いくつかの基準に応じてフィールドの構成をもう少し変更したい場合 (たとえば、項目が多い場合は選択ボックスから、項目が少ない場合はチェックボックスに変更する場合)、TYPO3 の方法を使用して要素を作成するのが最適です。

function someWizard($PA, $fObj) {
  $PA['fieldConf']['config']['type'] = 'select';
  $content = $fobj->getSingleField_typeInput('TABLE_NAME', $PA['field'], false, $PA);
  return $content;
}
  • TABLE_NAMEをテーブルの名前に置き換えます。
  • TCA セットアップのその他のデフォルト設定はすべてそのままにしておきます。
  • デバッグ$PAして、内部の内容とその場で何を変更する必要があるかを確認します。
于 2013-05-30T13:40:58.077 に答える