2

我有一个自定义表格的扩展,其中一个我无法开始工作。当我尝试从中findOneByUid()获取时,我似乎得到了正确的记录,但除了 from 之外uidpid所有属性的值都是null.

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

我已经配置:

  • ext_tables.php & ext_tables.sql
  • \Domain\Model\Advertisercategories.php
  • \Domain\Repository\AdvertisercategoriesRepository.php
  • \Configuration\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

非常感谢任何帮助!

4

2 回答 2

1

看起来您自己已经“调整”了代码中的某些内容。数据类型\string应该只是string我猜的。模型\VENDOR\MyExt\Domain\Model\Advertisers应该(通过命名约定)以单数命名,所以\VENDOR\MyExt\Domain\Model\Advertiser你的类的成员变量应该只是$advertiser而不是$advertiserId.

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

于 2013-07-23T08:19:37.650 回答
0

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

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

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

感谢您抽出时间通过迈克尔进行调查!我附上了很多代码。

但是复数与单数名称似乎没有问题。尽管下次使用单数名称会更好,但我同意你的看法:)

于 2013-07-24T15:22:32.313 回答