TYPO3。在FLUID View Helpers中将对象作为参数传递

时间:2013-06-26 11:43:34

标签: parameter-passing typo3 view-helpers

在以下代码中,books是包含某些属性的book对象列表。点击标题,即可进入操作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());
}

此处的图书价值未设定。 [book] =&gt;空值。我尝试打印它的类,它仍然给我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是我手动创建的,未在扩展构建器下注册。

1 个答案:

答案 0 :(得分: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和表文件中的一个条目。使用扩展构建器更好地创建模型,从一开始就更容易,更安全。