Extbase Model: setSysLanguageUid not working

不问归期 提交于 2019-12-01 12:27:51

问题


I created an extbase model and try to set the sys_language_uid field when creating a new item. For some reason though, it is completely ignored and always set to 0, even when the value I try to enter is definitely 1.

My Model looks like this:

class Ad extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {

    /**
     * sysLanguageUid
     *
     * @var integer
     */
    protected $sysLanguageUid;


    /**
     * @return int
     */
    public function getSysLanguageUid()
    {
        return $this->sysLanguageUid;
    }

    /**
     * @param int $sysLanguageUid
     */
    public function setSysLanguageUid($sysLanguageUid)
    {
        $this->sysLanguageUid = $sysLanguageUid;
    }

    // ... etc. 
}

and in my controller all I try to do is this:

$ad = new Ad(); 
$ad->setSysLanguageUid($GLOBALS['TSFE']->sys_language_uid);
$ad->setSomeOtherParam('xxx');
$this->adRepository->add($ad);

The other param is saved just fine. sys_language_uid exists in ext_tables.sql and in the TCA:

'columns' => array(
    'sys_language_uid' => array(
        'exclude' => 1,
        'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.language',
        'config' => array(
            'type' => 'select',
            'foreign_table' => 'sys_language',
            'foreign_table_where' => 'ORDER BY sys_language.title',
            'items' => array(
                array('LLL:EXT:lang/locallang_general.xml:LGL.allLanguages', -1),
                array('LLL:EXT:lang/locallang_general.xml:LGL.default_value', 0)
            ),
        ),
    ),  
    'some_other_field' => ....
)

Why is setSysLanguageUid not working? Any hints?


回答1:


it seems like setSysLanguageUid doesn't work because typo3 is UNNECESSARILY CONVOLUTED AND DIFFICULT. For some reason it is possible to set the language ID but only by defining and using these getters and setters:

/**
 * _languageUid
 * @var int
 */
protected $_languageUid;

/**
 * @param int $_languageUid
 * @return void
 */
public function set_languageUid($_languageUid) {
    $this->_languageUid = $_languageUid;
}

/**
 * @return int
 */
public function get_languageUid() {
    return $this->_languageUid;
}

I swear, typo3 is gonna give me a heart attack one of these days....



来源:https://stackoverflow.com/questions/33781458/extbase-model-setsyslanguageuid-not-working

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!