【问题标题】:Extbase Model: setSysLanguageUid not workingExtbase 模型:setSysLanguageUid 不起作用
【发布时间】:2015-11-18 13:33:02
【问题描述】:

我创建了一个 extbase 模型并尝试在创建新项目时设置 sys_language_uid 字段。但由于某种原因,它被完全忽略并始终设置为 0,即使我尝试输入的值肯定是 1。

我的模型如下所示:

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. 
}

在我的控制器中,我尝试做的只是:

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

另一个参数保存得很好。 sys_language_uid 存在于 ext_tables.sql 和 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' => ....
)

为什么 setSysLanguageUid 不起作用?有什么提示吗?

【问题讨论】:

    标签: typo3 extbase


    【解决方案1】:

    似乎 setSysLanguageUid 不起作用,因为typo3 是不必要的复杂和困难的。由于某种原因,可以设置语言 ID,但只能通过定义和使用这些 getter 和 setter:

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

    我发誓,typo3 这些天会让我心脏病发作....

    【讨论】:

    • 我复制了你的问题:stackoverflow.com/questions/37706042/…
    • 我尝试简单地将上面的代码粘贴到我的模型中并执行$entry->set_languageUid = -1;,但这可能还不够。这真的应该写到tx_myext_domain_model_item.sys_language_uid吗?
    • 是的,但你需要做 $entry->set_languageUid(-1);
    • eeew...对不起,我没有发现!有用! TYPO3 / Extbase 怎么知道_languageUid 指的是sys_language_uid?你是怎么发现的?你的心怎么样 :-) ?
    • 自 2021 年起,您可以在所有实体上简单地使用 setSyslanguageUid() :-)
    【解决方案2】:

    从 2021 年和 TYPO3 10.x 开始

    /**
     * @var int
     */
    protected $sysLanguageUid;
    
    /**
     * Get sys language
     *
     * @return int
     */
    public function getSysLanguageUid()
    {
        return $this->_languageUid;
    }
    
    /**
     * Set sys language
     *
     * @param int $sysLanguageUid language uid
     */
    public function setSysLanguageUid($sysLanguageUid)
    {
        $this->_languageUid = $sysLanguageUid;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      相关资源
      最近更新 更多