TYPO3:在新动作中保存外国 mm table

TYPO3: Saving foreign mm table in new action

我有两个实体:请求和事件。 因此,当在前端创建 Request 时,用户可能 select Events (多个复选框)受他的请求影响。很明显是MM关系

我设法在 RequestFormFields.html 部分内显示了每个 Event。使用以下代码:

RequestController.php(仅 new 操作)

    /**
     * action new
     *
     * @param \Vendor\ExtName\Domain\Model\Request $newRequest
     * @ignorevalidation $newRequest
     * @return void
     */
    public function newAction(\Vendor\ExtName\Domain\Model\Request $newRequest = NULL) {
        $events = $this->eventRepository->findAll();
        $this->view->assign('events', $events);
        $this->view->assign('newRequest', $newRequest);
    }

...将 New.html 中的所有参数传递给 FormField.html

<f:render partial="Request/FormFields" arguments="{_all}"/>

并为每个 {events}

呈现一个复选框
<f:for each="{events}" as="event">
    <f:form.checkbox value="{event.uid}" name="events" id="event{event.uid}"/>
    &nbsp;
    <label for="event{event.uid}">{event.namede}</label><br/>
</f:for>

TCA:

'events' => array(
    'exclude' => 1,
    'label' => 'LLL:EXT:extname/Resources/Private/Language/locallang_db.xlf:tx_extname_domain_model_request.events',
    'config' => array(
        'type' => 'select',
        'foreign_table' => 'tx_extname_domain_model_event',
        'MM' => 'tx_extname_request_event_mm',
        'size' => 10,
        'autoSizeMax' => 30,
        'maxitems' => 9999,
        'multiple' => 0,
        'wizards' => array(
            '_PADDING' => 1,
            '_VERTICAL' => 1,
            'edit' => array(
                'type' => 'popup',
                'title' => 'Edit',
                'script' => 'wizard_edit.php',
                'icon' => 'edit2.gif',
                'popup_onlyOpenIfSelected' => 1,
                'JSopenParams' => 'height=350,width=580,status=0,menubar=0,scrollbars=1',
            ),
            'add' => Array(
                'type' => 'script',
                'title' => 'Create new',
                'icon' => 'add.gif',
                'params' => array(
                    'table' => 'tx_extname_domain_model_event',
                    'pid' => '###CURRENT_PID###',
                    'setValue' => 'prepend'
                ),
                'script' => 'wizard_add.php',
            ),
        ),
    ),
),

但我不知道如何将 selected 事件的值保存到数据库中。有人可以帮忙吗?

改为 name="events" 使用 属性="nameOfPropertyInYourModel"

<f:form.checkbox value="{event.uid}" name="events" id="event{event.uid}"/>

里杰这个:

<f:form.checkbox value="{event.uid}" property="events" id="event{event.uid}"/>

并且 Extbase 会自己找出连接。我建议对要存储在模型中的所有属性使用 属性 而不是名称。

此致, 西尼萨·米特罗维奇