0

私は現在、ネストされたモデルでTYPO3の最初のextbase拡張機能を書いています。

次のモデルが存在します。

著者-属性:名前と説明

ニュース-属性:タイトル、日付、作成者

著者はこのようなニュースモデルに含まれています

/**
 * @var Tx_Extbase_Persistence_ObjectStorage<Tx_Simplenews_Domain_Model_Author>
 * @lazy
 * @cascade remove
 **/
protected $author = 0;

Fluidでのデバッグも機能しますが、作成者オブジェクトにはキーuuid(たとえば、 "000000007d9412bd000000000217f7d0")があり、リクエストごとに変更されます。

すべてのニュースに著者の名前を表示したいだけです。1つの名前。

したがって、作成者オブジェクトをループして、キーを見つけ、次のように名前を表示する必要があります。

<f:for each="{oneNews.author}" as="author">
    <td>{author.name}</td>`
</f:for>

これに対するより良い解決策はありますか?

<f:for each="{news}" as="oneNews">
    <td>{oneNews.author.name}</td>
</f:for>

動作しません。

前もって感謝します!

4

3 に答える 3

1

答えを得た

News.php(モデル)の次のコードを更新しました:

/**
* @var Tx_Extbase_Persistence_ObjectStorage<Tx_Simplenews_Domain_Model_Author>
* @lazy
**/
protected $author;

コンストラクタ:

public function __construct() {
    $this->author = new Tx_Extbase_Persistence_ObjectStorage();
}

ゲッター:

/**
 * @return Tx_Simplenews_Domain_Model_Author
 */
public function getAuthor() {
    $author = $this->author;
    $author->rewind(); // rewinds the iterator to the first storage element
    return $author->current(); // returns the current storage entry.
}

これで、著者の名前にアクセスできます。{oneNews.author.name}

于 2012-07-03T12:49:52.377 に答える
1

では、そもそもなぜAuthorにobjectStorageを使用するのでしょうか。ObjectStoragesは、複数のオブジェクトを格納するためのものです。あなたのニュースが同時に2人以上の著者を持つことができない限り、そのプロパティのためにobjectStorageはまったく必要ありません。次に、メソッドを介してobjectStorageの最初のオブジェクトを返す必要はありませんgetAuthor()。これにより、ホールオブジェクトのストレージ使用量が廃止されます。

ニュースには著者が1人しかいないと思います。これを試して:

ニュースモデル:

/**
 * @var Tx_Simplenews_Domain_Model_Author
 **/
protected $author;

/**
 * @param Tx_Simplenews_Domain_Model_Author $author
 * @return void
 */
public function setAuthor(Tx_Simplenews_Domain_Model_Author $author) {
  $this->author = $author;
}

/**
 * @return Tx_Simplenews_Domain_Model_Author
 */
public function getAuthor() {
  return $this->author;
}

あなたのFluid-Templateにはまだ次のものがあります:

{oneNews.author.name}

したがって、必要がない場合は、objectStorageを使用しないでください。

于 2013-11-01T13:53:04.747 に答える
0

私はあなたが望む方法でニュースをリストするダミーのニュース拡張機能を作成しました。このgitリポジトリを参照してください。あなたの場合、何が悪かったのかわかりません。ところで、Extension BuilderList.htmlを使用して拡張機能を作成し、のテンプレートを変更しましたNews

于 2012-07-02T14:43:08.187 に答える