3

下面的代码booksbook包含某些属性的对象列表。通过点击标题,它会进入一个动作display

流体模板是

 <f:for each="books" as="book">
    <f:link.action action="display" arguments="{book: book}"> {book.title} </f:link.action>
 </f:for>

在控制器中

public function displayAction(){
    print_r($this->request->getArguments());
}

这里的书的价值没有被设定。[书] => 空。我尝试打印它的类,它仍然给我null。

当我将参数发送为book.title instead of the entire object

我在这里想念什么?这是将对象作为参数传递的正确方法吗?

编辑:

最初我尝试过这种方式。

public function displayAction(\TYPO3\MyExt\Domain\Model\Book $book) {}

但这给了我

Exception while property mapping at property path "":No converter found which can be used to convert from "string" to "TYPO3\MyExt\Domain\Model\Book"

Book 类是我手动创建的,没有在扩展生成器下注册。

4

1 回答 1

3

您可以使用该操作的参数进行尝试:

     public function myAction(Tx_MyExt_Domain_Model_Book $book) {
        $this->view->assignMultiple(array(
           'title' => $book->getTitle(),
           'label' => $book->getLabel(),
           'content' => $book->getContent()
        ));
     }

编辑:我更新了示例。

更新:

它适用于 book.title 因为它只是一个字符串。当您想要一个完整的书籍对象时,需要在某个存储空间中找到它。一个数据库,例如。因此,这意味着您需要一个模型和一个存储库。也是 tca 和表文件中的一个条目。使用扩展构建器更好地创建您的模型,一开始它更容易和更安全。

于 2013-06-26T14:57:21.560 回答