2

カスタム テーブルを使用した拡張機能がありますが、そのうちの 1 つが機能しません。それから取得しようとするfindOneByUid()と、正しいレコードを取得しているように見えますが、 from を除きuidpidすべてのプロパティの値はnullです。

テーブルの名前は次のとおりですtx_myext_domain_model_advertisercategories。以前は広告主とカテゴリの間にアンダースコアを使用していましたが、これは extbase が期待する方法のようです。

私は設定しました:

  • ext_tables.php & ext_tables.sql
  • \ドメイン\モデル\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 に答える