在获取模型时,除了uid之外,所有属性都为null

时间:2013-07-23 07:16:28

标签: typo3 extbase

我有一个自定义表的扩展,其中一个我无法工作。当我尝试findOneByUid()时,我似乎得到了正确的记录,但除了uidpid之外,所有属性的值均为null

表的名称是:tx_myext_domain_model_advertisercategories。我以前在广告客户和类别之间有一个下划线,但似乎这是extbase期望它的方式。

我已配置:

  • ext_tables.php& ext_tables.sql
  • \域\模型\ Advertisercategories.php
  • \域\库\ AdvertisercategoriesRepository.php
  • \配置\ TCA \ Advertisercategories.php

我已将这些文件上传到Github: https://gist.github.com/kuipersb/4a5ef7f14ecc979866ae

执行findOneByUid()或我的自定义方法searchAdvertiser()时获得的输出如下:

object(VENDOR\MyExt\Domain\Model\Advertisercategories)[334]
    protected 'advertiserId' => null
    protected 'name' => null
    protected 'uniqueCode' => null
    protected 'discount' => null
    protected 'uid' => int 1
    protected '_localizedUid' => int 1
    protected '_languageUid' => null
    protected 'pid' => int 2
    private '_isClone' (TYPO3\CMS\Extbase\DomainObject\AbstractDomainObject) => boolean false
    private '_cleanProperties' (TYPO3\CMS\Extbase\DomainObject\AbstractDomainObject) => 
      array (size=6)
        'advertiserId' => null
        'name' => null
        'uniqueCode' => null
        'discount' => null
        'uid' => int 1
        'pid' => int 2

但我希望:

advertiserId: 2
name: Test
unique_code: test
discount: 10.00

任何帮助都非常感谢!

2 个答案:

答案 0 :(得分:1)

您自己已经在代码中“调整”了一些内容。数据类型\string我应该只是string。模型\VENDOR\MyExt\Domain\Model\Advertisers应该(通过命名约定)以单数形式命名,因此只需要\VENDOR\MyExt\Domain\Model\Advertiser,而类的成员变量应该只是$advertiser而不是$advertiserId

当您在代码中放入一个对象时,TYPO3只会将uid写入字段,因此不需要再将id的字段命名为。

答案 1 :(得分:0)

我的问题出在ext_tables.php。部分说:

'dynamicConfigFile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($_EXTKEY) . 'Configuration/TCA/Advertisers.php',

最后它不应该是Advertisers.php,而是AdvertiserCategories.php。一个小错字.. :))

感谢你抽出时间调查迈克尔!我附上了很多代码。

但复数与单数名称似乎没有问题。虽然下次使用单数名称会更好,但我同意你:)