Typo3 (7.6.14) Extbase: новое свойство не сохранено в базе данных
Мне нужно было новое поле "json" для моего расширения, поэтому я добавил новое поле "json" (mediumtext) в базу данных, а затем добавил следующий код в мою модель:
/**
* json
*
* @var string
*/
protected $json = '';
/**
* Returns the json
*
* @return string $json
*/
public function getJson()
{
return $this->json;
}
/**
* Sets the json
*
* @param string $json
* @return void
*/
public function setJson($json)
{
$this->json = $json;
}
Но когда я устанавливаю свойство с помощью $myObject->setJson("12345678910"), добавляю объект в хранилище и сохраняю его
$this->myObjectRepository->add($myObject);
$this->persistenceManager->persistAll();
Все остальные свойства сохранены, кроме свойства json (вызывается setter).
Я также попытался отобразить свойство в поле базы данных в typoscript:
plugin.tx_menopur {
persistence {
classes {
Company\Extension\Domain\Model\MyModel {
mapping {
tableName = tx_extension_domain_model_mymodel
recordType = \Company\Extension\Domain\Model\MyModel
columns {
json.mapOnProperty = json
}
}
}
}
}
}
2 ответа
Спасибо, вставьте имя пользователя здесь для подсказки TCA. Теперь я добавил tx_company_domain_model_mymodel.php в...Configuration/TCA/Overrides/ со следующим содержимым:
## EXTENSION BUILDER DEFAULTS END TOKEN - Everything BEFORE this line is overwritten with the defaults of the extension builder
if (!defined('TYPO3_MODE')) {
die ('Access denied.');
}
$temporaryColumns = array (
'json' => array (
'exclude' => 0,
'label' => 'Json',
'config' => array (
'type' => 'text',
)
),
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
'tx_extension_domain_model_mymodel',
$temporaryColumns
);
Спасибо!
Для добавления нового свойства в расширение extbase. Вам необходимо обновить ниже трех файлов.
- ext_tables.spl
- Конфигурация / ТС /tx_extension_key_domain_model_model.php
- Классы / домен / Модель /model_anme.php
Конфигурация вашей модели правильная. Пожалуйста, добавьте ниже конфигурации, если не добавлено.
Для ext_tables.spl
#
# Table structure for table 'tx_extension_key_domain_model_model'
#
CREATE TABLE tx_extension_key_domain_model_model (
json varchar(255) DEFAULT '' NOT NULL,
)
Ваша конфигурация TCA выглядит следующим образом.
'json' => array(
'exclude' => 0,
'label' => 'title',
'config' => array(
'type' => 'input',
'size' => 30,
'eval' => 'trim'
),
),