Typo3 6.2 TCA后端表单 - 如何填充在此示例中动态选择

时间:2016-09-10 22:03:43

标签: mysql forms list typo3 typo3-6.2.x

我有3个实体:

  1. 预约
  2. 医生(延长fe_users)
  3. 专业化
  4. 依赖关系:

    • 每个约会只有一名医生
    • 每位医生至少有一个专业
    • 每个约会至少有一个专业化 - 但不可以 一个医生没有的

    我的目标:选择医生后,您可以选择使用哪种医生专业化来对预约进行分类 - 但也应该进行多项选择。

    编辑:我想出了这个SQL,以便在我的选择字段中更清楚我想要的内容:

    SELECT s.name
    FROM 
    tx_appointments_domain_model_specialization s, 
    fe_users fe,
    tx_appointments_doctor_specialization_mm ds,
    WHERE fe.username = "###REC_FIELD_doctor###" 
    AND ds.uid_local = fe.uid
    AND s.uid = ds.uid_foreign;
    

    所以Appointment的TCA部分现在看起来像这样: 它几乎都是由扩展构建器生成的,除了'foreign_table_where'中的doctor,我以某种方式发现了它。但我现在无法解决如何设置专业化的问题。

    'doctor' => array(
                    'exclude' => 1,
                    'label' => 'doctor',
                    'config' => array(
                        'type' => 'select',
                        'foreign_table' => 'fe_users',
                        'foreign_table_where' => "AND FIND_IN_SET('1', fe_users.usergroup) ORDER BY fe_users.last_name ASC, fe_users.first_name ASC",
                        'minitems' => 0,
                        'maxitems' => 1,
                    ),
                ),
    'specialization' => array(
                    'exclude' => 1,
                    'label' => 'specialization',
                    'config' => array(
                        'type' => 'select',
                        'foreign_table' => 'tx_appointments_domain_model_specialization',
                        'MM' => 'tx_appointments_appointment_specialization_mm',
                        'size' => 10,
                        'autoSizeMax' => 30,
                        'maxitems' => 9999,
                        'multiple' => 0,
                        'wizards' => array(
                            '_PADDING' => 1,
                            '_VERTICAL' => 1,
                            'edit' => array(
                                'module' => array(
                                    'name' => 'wizard_edit',
                                ),
                                'type' => 'popup',
                                'title' => 'Edit',
                                'icon' => 'edit2.gif',
                                'popup_onlyOpenIfSelected' => 1,
                                'JSopenParams' => 'height=350,width=580,status=0,menubar=0,scrollbars=1',
                            ),
                            'add' => Array(
                                'module' => array(
                                    'name' => 'wizard_add',
                                ),
                                'type' => 'script',
                                'title' => 'Create new',
                                'icon' => 'add.gif',
                                'params' => array(
                                    'table' => 'tx_appointments_domain_model_appointment',
                                    'pid' => '###CURRENT_PID###',
                                    'setValue' => 'prepend'
                                ),
                            ),
                        ),
                    ),
                ),
    

    我知道我可以使用像'foreign_table_where' => ..."###REC_FIELD_doctor###"...这样的东西,但我不知道整个SQL应该只是看医生的专业化。

    我可能不得不在ext_tables.php中添加这样的内容,我从this得到的答案类似于我的问题:

    $TCA['tx_appointments_domain_model_appointment']['ctrl']['requestUpdate'] .= ',doctor'; 
    

0 个答案:

没有答案