2017-06-14 93 views
0

我有TYPO3 7.6.18版本。TYPO3 ObjectStorage不保存數據

我無法從前端保存下拉字段,在後端保存。

我TCA:

'眼鏡'=>數組( '標籤'=> 'LLL:EXT:feusersplus /資源/私人/語言/ locallang_db.xlf:tx_feusersplus_domain_model_user.glasses', '配置' =>數組( '類型'=> '選擇', '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' ), ),

型號:

/** 
* 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; 
} 

我的觀點:

{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> 

真的,我試過很多變種。清除所有緩存。它不適用於後端。幫我請人),但這並沒有節省前端

回答

1

您需要在您的model文件中添加下列方法selectMultipleSideBySide選擇框

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文件類似下面。

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擴展,並清除所有cache data在安裝過路費。

+0

這是行不通的(( – Mikael

+0

我按照你的說法添加了代碼,我發現它在fe_users表中的field眼鏡中設置了glasses = 0,並且它沒有將行添加到glasses_mm表中 – Mikael

+0

它從glasses_mm中刪除行,但是不添加行到這張表((你能幫忙,請 – Mikael