【发布时间】:2014-12-31 02:54:36
【问题描述】:
我创建了一个可以显示益智游戏的小扩展。我所做的可切换控制器操作包括列表/显示(可以正常工作)、管理员(也可以)和仅显示。
仅用于显示,我想从 flexform 中选择一个数据库条目,然后由单个视图显示。为此,我在 flexform 中添加了一个新字段:
<settings.singlePuzzle>
<TCEforms>
<label>Puzzle to show</label>
<config>
<type>select</type>
<foreign_table>tx_wspuzzle_domain_model_puzzle</foreign_table>
<items>
<numIndex index="0" type="array">
<numIndex index="0">-- Choose --</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
</items>
<size>1</size>
<maxitems>1</maxitems>
<minitems>0</minitems>
</config>
</TCEforms>
</settings.singlePuzzle>
到目前为止一切顺利,如果我在此处选择一个项目并在列表视图中对其进行调试,它似乎选择了正确的 id。
现在我将控制器中的 showAction 更改为如下所示:
/**
* action show
*
* @param \Websafari\Wspuzzle\Domain\Model\Puzzle $puzzle
* @return void
*/
public function showAction(\Websafari\Wspuzzle\Domain\Model\Puzzle $puzzle = NULL) {
if(is_null($puzzle)) $puzzle = $this->puzzleRepository->findByUid($this->settings['singlePuzzle']);
$this->view->assign('puzzle', $puzzle);
}
所以现在我将操作更改为“仅显示”,为“singlePuzzle”选择一个条目,然后(我认为)我应该很好,但我得到的只是以下错误:
Required argument "puzzle" is not set.
显然我犯了一个错误,但我不明白。
第一:为什么仍然需要“拼图”?这就是我在函数中添加“= NULL”的原因(我还尝试在评论中添加@ignorevalidation $puzzle)。
第二:为什么没有设置?当我调试“$this->settings['singlePuzzle'];”时我得到了一个拼图对象的 ID。
如果有人能指出我的错误,那就太好了,因为我真的被困在这里了。非常感谢!
【问题讨论】:
-
一个临时的解决方案是像这样?tx_wspuzzle_puzzle[puzzle]在url中添加一个空参数。这很好用。我非常感谢 extbase 所做的所有工作,但有时会发生一些非常奇怪的事情。