Extbase 模型:setSysLanguageUid 不工作
Extbase Model: setSysLanguageUid not working
我创建了一个 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 不起作用?有什么提示吗?
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;
}
我发誓,错别字有一天会让我心脏病发作....
从 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;
}
我创建了一个 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 不起作用?有什么提示吗?
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;
}
我发誓,错别字有一天会让我心脏病发作....
从 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;
}