TYPO3 tx_news 添加自定义字段的问题
TYPO3 tx_news problem by adding custom field
我在为 typo3 8.7.20 的 tx_news 扩展添加 3 个自定义字段时遇到问题。
我使用过本教程:http://keinerweiss.de/525-die-extbase-extension-news-um-ein-feld-erweitern.html
但我无法让它工作。
在后端,我可以看到新字段(lat、lng、reciever),我可以用内容填充它们,当我保存它们时,它们就在数据库中。这样就可以正常工作了。
在前端它不起作用。如果我没有登录 Typo3,我现在连页面都看不到。
如果我登录:在流体调试器中我可以看到 3 个变量,但它们总是空的(即使我在这些新字段中保存了包含一些内容的新闻记录)
这是我的域模型:
<?php
namespace Newsextend\Newsextend\Domain\Model;
/**
* News model for default news
*
* @package TYPO3
* @subpackage tx_news
*/
class NewsDefault extends \GeorgRinger\News\Domain\Model\News {
/**
* @var string
*/
protected $ext_lat;
/**
* @var string
*/
protected $ext_lng;
/**
* @var string
*/
protected $ext_reciever;
/**
* Get lat
*
* @return string
*/
public function getExt_lat()
{
return $this->ext_lat;
}
public function setExt_lat($ext_lat)
{
$this->ext_lat = $ext_lat;
}
/**
* Get lng
*
* @return string
*/
public function getExt_lng()
{
return $this->ext_lng;
}
public function setExt_lng($ext_lng)
{
$this->ext_lng = $ext_lng;
}
/**
* Get reciever
*
* @return string
*/
public function getExt_reciever()
{
// return "teststring";
return $this->ext_reciever;
}
public function setExt_reciever($ext_reciever)
{
// return "teststring";
$this->ext_reciever = $ext_reciever;
}
/**
* Set title
*
* @param string $subtitle subtitle
* @return void
*/
public function setSubtitle($subtitle)
{
$this->subtitle = $subtitle;
}
}
这是我的打字稿 setup.txt:
plugin.tx_news {
persistence {
classes {
GeorgRinger\News\Domain\Model\News {
subclasses {
# three different classes are used for each news type
# 0 == default news
0 = Newsextend\Newsextend\Domain\Model\NewsDefault
}
}
Newsextend\Newsextend\Domain\Model\NewsDefault {
mapping {
recordType = 0
tableName = tx_news_domain_model_news
}
}
}
}
}
还有我的ext_tables.php
<?php
defined('TYPO3_MODE') || die('Access denied.');
call_user_func(
function()
{
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('newsextend', 'Configuration/TypoScript', 'news_extend');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript', 'news_extend');
}
);
// define new fields
$tempColumns = array(
'ext_lat' => array(
'exclude' => 0,
'label' => 'LAT',
'config' => array(
'type' => 'input',
'size' => 30,
'eval' => 'trim'
),
),
'ext_lng' => array(
'exclude' => 0,
'label' => 'LONG',
'config' => array(
'type' => 'input',
'size' => 30,
'eval' => 'trim'
),
),
'ext_reciever' => array(
'exclude' => 0,
'label' => 'Förderungsempfänger',
'config' => array(
'type' => 'input',
'size' => 30,
'eval' => 'trim'
),
),
);
// add field to tca
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
'tx_news_domain_model_news',
$tempColumns,
1
);
// add new field subtitle after title
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes("tx_news_domain_model_news", 'ext_lat', '', 'after:title');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes("tx_news_domain_model_news", 'ext_lng', '', 'after:ext_lat');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes("tx_news_domain_model_news", 'ext_reciever', '', 'after:ext_lng');
谁能看到我的问题?
谢谢
克里斯托弗·史密斯
在 extbase 中,下划线被转换为大写。因此,如果您在数据库中的字段是 ext_lat
,那么 属性 必须是 $extLat
并且 getters 和 setters 也必须根据它进行更改。
我在为 typo3 8.7.20 的 tx_news 扩展添加 3 个自定义字段时遇到问题。
我使用过本教程:http://keinerweiss.de/525-die-extbase-extension-news-um-ein-feld-erweitern.html
但我无法让它工作。
在后端,我可以看到新字段(lat、lng、reciever),我可以用内容填充它们,当我保存它们时,它们就在数据库中。这样就可以正常工作了。
在前端它不起作用。如果我没有登录 Typo3,我现在连页面都看不到。
如果我登录:在流体调试器中我可以看到 3 个变量,但它们总是空的(即使我在这些新字段中保存了包含一些内容的新闻记录)
这是我的域模型:
<?php
namespace Newsextend\Newsextend\Domain\Model;
/**
* News model for default news
*
* @package TYPO3
* @subpackage tx_news
*/
class NewsDefault extends \GeorgRinger\News\Domain\Model\News {
/**
* @var string
*/
protected $ext_lat;
/**
* @var string
*/
protected $ext_lng;
/**
* @var string
*/
protected $ext_reciever;
/**
* Get lat
*
* @return string
*/
public function getExt_lat()
{
return $this->ext_lat;
}
public function setExt_lat($ext_lat)
{
$this->ext_lat = $ext_lat;
}
/**
* Get lng
*
* @return string
*/
public function getExt_lng()
{
return $this->ext_lng;
}
public function setExt_lng($ext_lng)
{
$this->ext_lng = $ext_lng;
}
/**
* Get reciever
*
* @return string
*/
public function getExt_reciever()
{
// return "teststring";
return $this->ext_reciever;
}
public function setExt_reciever($ext_reciever)
{
// return "teststring";
$this->ext_reciever = $ext_reciever;
}
/**
* Set title
*
* @param string $subtitle subtitle
* @return void
*/
public function setSubtitle($subtitle)
{
$this->subtitle = $subtitle;
}
}
这是我的打字稿 setup.txt:
plugin.tx_news {
persistence {
classes {
GeorgRinger\News\Domain\Model\News {
subclasses {
# three different classes are used for each news type
# 0 == default news
0 = Newsextend\Newsextend\Domain\Model\NewsDefault
}
}
Newsextend\Newsextend\Domain\Model\NewsDefault {
mapping {
recordType = 0
tableName = tx_news_domain_model_news
}
}
}
}
}
还有我的ext_tables.php
<?php
defined('TYPO3_MODE') || die('Access denied.');
call_user_func(
function()
{
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('newsextend', 'Configuration/TypoScript', 'news_extend');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript', 'news_extend');
}
);
// define new fields
$tempColumns = array(
'ext_lat' => array(
'exclude' => 0,
'label' => 'LAT',
'config' => array(
'type' => 'input',
'size' => 30,
'eval' => 'trim'
),
),
'ext_lng' => array(
'exclude' => 0,
'label' => 'LONG',
'config' => array(
'type' => 'input',
'size' => 30,
'eval' => 'trim'
),
),
'ext_reciever' => array(
'exclude' => 0,
'label' => 'Förderungsempfänger',
'config' => array(
'type' => 'input',
'size' => 30,
'eval' => 'trim'
),
),
);
// add field to tca
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
'tx_news_domain_model_news',
$tempColumns,
1
);
// add new field subtitle after title
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes("tx_news_domain_model_news", 'ext_lat', '', 'after:title');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes("tx_news_domain_model_news", 'ext_lng', '', 'after:ext_lat');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes("tx_news_domain_model_news", 'ext_reciever', '', 'after:ext_lng');
谁能看到我的问题? 谢谢 克里斯托弗·史密斯
在 extbase 中,下划线被转换为大写。因此,如果您在数据库中的字段是 ext_lat
,那么 属性 必须是 $extLat
并且 getters 和 setters 也必须根据它进行更改。