在以下代码中,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是我手动创建的,未在扩展构建器下注册。
答案 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和表文件中的一个条目。使用扩展构建器更好地创建模型,从一开始就更容易,更安全。