Php 使用typo3 6.2.9将对象从视图传递到控制器
我在Typo3 6.2.9中遇到了以下问题: 当我使用f:link操作和参数将一些对象传递给控制器时,这些对象将到达控制器,但他没有将它们注册为我发送的对象。为了更好地进行解释,请参见以下单个代码部分: 在部分会议上:Php 使用typo3 6.2.9将对象从视图传递到控制器,php,view,controller,extbase,typo3-6.2.x,Php,View,Controller,Extbase,Typo3 6.2.x,我在Typo3 6.2.9中遇到了以下问题: 当我使用f:link操作和参数将一些对象传递给控制器时,这些对象将到达控制器,但他没有将它们注册为我发送的对象。为了更好地进行解释,请参见以下单个代码部分: 在部分会议上: <f:link.action action="new" controller="ForeignProductMeasuring" arguments="{planRow : planRow, plan:plan}">neue Dosierung anlegen<
<f:link.action action="new" controller="ForeignProductMeasuring" arguments="{planRow : planRow, plan:plan}">neue Dosierung anlegen</f:link.action>
在我看来,这表明这些论点是正确的
以下是控制器上的操作:
public function newAction(\Orochemie\Desinfektionsplan\Domain\Model\ForeignProductMeasuring $newForeignProductMeasuring = NULL,
\Orochemie\Desinfektionsplan\Domain\Model\PlanRow $planRow,
\Orochemie\Desinfektionsplan\Domain\Model\Plan $plan) {
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump( $this->request->getArguments());
$this->view->assign('newForeignProductMeasuring',$newForeignProductMeasuring);
$this->view->assign('planRow', $planRow);
$this->view->assign('plan', $plan);
}
错误如下所示:
#1: PHP Catchable Fatal Error: Argument 2 passed to
Orochemie\Desinfektionsplan\Controller\ForeignProductMeasuringController::newAction()
must be an instance of Orochemie\Desinfektionsplan\Domain\Model\PlanRow,
none given in /kunden/137629_70806/typo3/typo3conf/ext/desinfektionsplan/Classes/Controller/ForeignProductMeasuringController.php line 46
对我来说,他似乎不知道他得到的东西。但是如果我用$this->request->getArguments()检查参数,那么我会看到所有参数都到达控制器
有人知道这里的问题是什么吗?您是否在PHPDoc注释中定义了参数
/**
* @param \Orochemie\Desinfektionsplan\Domain\Model\ForeignProductMeasuring newForeignProductMeasuring
* @param \Orochemie\Desinfektionsplan\Domain\Model\PlanRow $planRow
* @param \Orochemie\Desinfektionsplan\Domain\Model\Plan $plan
* @return void
*/
public function newAction(\Orochemie\Desinfektionsplan\Domain\Model\ForeignProductMeasuring $newForeignProductMeasuring = NULL,
\Orochemie\Desinfektionsplan\Domain\Model\PlanRow $planRow,
\Orochemie\Desinfektionsplan\Domain\Model\Plan $plan) {
...
}
这些对于ObjectMapper非常重要
/**
* @param \Orochemie\Desinfektionsplan\Domain\Model\ForeignProductMeasuring newForeignProductMeasuring
* @param \Orochemie\Desinfektionsplan\Domain\Model\PlanRow $planRow
* @param \Orochemie\Desinfektionsplan\Domain\Model\Plan $plan
* @return void
*/
public function newAction(\Orochemie\Desinfektionsplan\Domain\Model\ForeignProductMeasuring $newForeignProductMeasuring = NULL,
\Orochemie\Desinfektionsplan\Domain\Model\PlanRow $planRow,
\Orochemie\Desinfektionsplan\Domain\Model\Plan $plan) {
...
}