首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectStorage不保存数据

ObjectStorage不保存数据
EN

Stack Overflow用户
提问于 2017-06-14 17:59:30
回答 1查看 442关注 0票数 1

我使用的是TYPO3 7.6.18版。

我不能在前端保存下拉字段,但我可以在后台保存它。

TCA:

代码语言:javascript
复制
'glasses' => array(
    'label' => 'LLL:EXT:feusersplus/Resources/Private/Language/locallang_db.xlf:tx_feusersplus_domain_model_user.glasses',
    'config' => array(
        'type' => 'select',
        'renderType' => 'selectMultipleSideBySide',
        'foreign_table' => 'tx_feusersplus_domain_model_glasses',
        'MM' => 'tx_feusersplus_user_glasses_mm',
        'foreign_table_where' => 'AND tx_feusersplus_domain_model_glasses.sys_language_uid=###REC_FIELD_sys_language_uid### ',
        'maxitems' => '50'
    ),
),

模型:

代码语言:javascript
复制
/**
 * glasses
 *
 * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Fhk\Feusersplus\Domain\Model\Glasses>
  * 
 */
protected $glasses;

/**
 * Returns the glasses
 *
 * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Fhk\Feusersplus\Domain\Model\Glasses> $glasses
 */
public function getGlasses()
{
    return $this->glasses;
}

/**
 * Sets the glasses
 *
 * @return void
 */
public function setGlasses($glasses)
{
    $this->glasses = $glasses;
}

视图:

代码语言:javascript
复制
{namespace femanager=Fhk\Feusersplus\ViewHelpers}
<f:render section="default" arguments="{_all}" />

<f:section name="default">
    <div class="femanager_fieldset femanager_glasses control-group">
        <label for="femanager_field_glasses" class="control-label">
            <f:translate key="tx_feusersplus.glasses"/>
            <f:if condition="{femanager:Validation.IsRequiredField(fieldName:'glasses')}">
                <span>*</span>
            </f:if>
        </label>
        <div class="controls">
            <femanager:form.select
                id="femanager_field_glasses"
                property="glasses"
                options="{femanager:Form.GetGlasses()}"
                class="input-block-level"
                additionalAttributes="{femanager:Validation.FormValidationData(settings:settings,fieldName:'glasses')}" />
        </div>
    </div>
</f:section>

真的,我尝试了很多变种。已清除所有缓存。而且它不能在后端工作。请帮助我,请任何人)它不会节省前端

EN

回答 1

Stack Overflow用户

发布于 2017-06-14 18:34:24

您需要在selectMultipleSideBySide选择框的model文件中添加以下方法

代码语言:javascript
复制
protected function initStorageObjects() {
    $this->glasses = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
}


/**
 * Adds a glasses
 *
 * @param \Fhk\Feusersplus\Domain\Model\Glasses $glasses
 * @return void
 */
public function addglasses(\Fhk\Feusersplus\Domain\Model\Glasses $glasses) {
    $this->glasses->attach($glasses);
}

/**
 * Removes a glasses
 *
 * @param \Fhk\Feusersplus\Domain\Model\Glasses $glassesToRemove The Category to be removed
 * @return void
 */
public function removeglasses(\Fhk\Feusersplus\Domain\Model\Glasses $glassesToRemove) {
    $this->glasses->detach($glassesToRemove);
}

/**
 * Returns the glasses
 *
 * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Fhk\Feusersplus\Domain\Model\Glasses> $glasses
 */
public function getglasses() {
    return $this->glasses;
}

/**
 * Sets the glasses
 *
 * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Fhk\Feusersplus\Domain\Model\Glasses> $glasses
 * @return void
 */
public function setglasses(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $glasses) {
    $this->glasses = $glasses;
}

还有您的TCA和sql文件,如下所示。

代码语言:javascript
复制
glasses int(11) unsigned DEFAULT '0' NOT NULL,

    'glasses' => [
    'exclude' => true,
    'label' => 'LLL:EXT:feusersplus/Resources/Private/Language/locallang_db.xlf:tx_feusersplus_domain_model_user.glasses',
    'config' => [
    'type' => 'select',
    'renderType' => 'selectMultipleSideBySide',
    'foreign_table' => 'tx_feusersplus_domain_model_glasses',
    'MM' => 'tx_feusersplus_user_glasses_mm',
    'size' => 10,
    'autoSizeMax' => 30,
    'maxitems' => 9999,
    'multiple' => 0,
    'wizards' => [
        '_PADDING' => 1,
        '_VERTICAL' => 1,
        'edit' => [
            'module' => [
                'name' => 'wizard_edit',
            ],
            'type' => 'popup',
            'title' => 'Edit', // todo define label: LLL:EXT:.../Resources/Private/Language/locallang_tca.xlf:wizard.edit
            'icon' => 'EXT:backend/Resources/Public/Images/FormFieldWizard/wizard_edit.gif',
            'popup_onlyOpenIfSelected' => 1,
            'JSopenParams' => 'height=350,width=580,status=0,menubar=0,scrollbars=1',
        ],
        'add' => [
            'module' => [
                'name' => 'wizard_add',
            ],
            'type' => 'script',
            'title' => 'Create new', // todo define label: LLL:EXT:.../Resources/Private/Language/locallang_tca.xlf:wizard.add
            'icon' => 'EXT:backend/Resources/Public/Images/FormFieldWizard/wizard_add.gif',
            'params' => [
                'table' => 'tx_drcbanners_domain_model_bannerscategories',
                'pid' => '###CURRENT_PID###',
                'setValue' => 'prepend'
            ],
        ],
    ],
],
],

添加此命令后,更改一次uninstall / install扩展并清除install tolls中的所有cache data

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44541479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档