【问题标题】:When fetching a model, all properties are null except for uid获取模型时,除 uid 外,所有属性均为空
【发布时间】:2013-07-23 07:16:28
【问题描述】:

我有一个带有自定义表格的扩展程序,其中之一是我无法开始工作的。当我尝试从中findOneByUid() 时,我似乎得到了正确的记录,但除了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

非常感谢任何帮助!

【问题讨论】:

  • 它是否适用于扩展构建器在您编辑之前创建的代码?在后端添加记录时是否出现错误?
  • 我已经从扩展构建器为Advertisers 和其他模型/存储库生成的代码中尽可能地复制了它。在后端添加记录似乎也不起作用。我得到一个空表单。
  • 您是否使用扩展构建器完成了整个建模过程?这件事的基本思想是,您不再需要为“基本”内容复制和粘贴生成的类,因为一切都应该由扩展创建。您能否在加载了您的扩展程序后,在扩展程序构建器中发布建模窗格的屏幕截图?
  • 完整以备日后参考;是的,所有使用 Extension Builder 构建的模型,除了这个新的类别模型。它基于 Advertisers 模型的副本。我认为复制一些文件并更改名称会更快..下次需要更加小心:)

标签: typo3 extbase


【解决方案1】:

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

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

【讨论】:

  • 感谢您的建议,我会尝试一下。
  • 我已经尝试重命名为单数名称,但这并没有改变任何东西。但是,我发现了该错误,并将其作为新答案附加。感谢您的时间和批评!
【解决方案2】:

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

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

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

感谢您抽出时间通过 Michael 进行调查!我附加了很多代码。

但复数与单数名称似乎没有问题。虽然下次最好用单数,但我同意你的看法:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-04
    • 2021-09-22
    • 2018-11-30
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多