我目前正在尝试编写一个简单的输入表单扩展名:用户输入输入字段值,提交操作将值插入数据库,然后重定向到外部支付服务。
不幸的是,点击提交按钮后,createAction函数没有显示任何反应。
出于测试目的,我只想在提交后输出文字。但即使这样也行不通。
如果我在newAction中使用完全相同的flashMessageContainer函数,它可以工作:消息立即显示。但是当我想在点击提交按钮后显示它时,只会发生页面重新加载。
可能是什么问题?
资源/私人/模板/付款/ New.html:
<f:form method="post" controller="Payment" action="create" id="newPayment" name="newPayment" object="{newPayment}">
<f:render partial="Payment/FormFields" />
<div class="buttons row">
<div class="col c6">
<f:form.submit value="{f:translate(key:'tx_chilipayment_domain_model_payment.submit')}" />
</div>
</div>
......
Classes / Controller / PaymentController.php:
<?php
namespace chilischarf\ChiliPayment\Controller;
class PaymentController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
/**
* paymentRepository
*
* @var \chilischarf\ChiliPayment\Domain\Repository\PaymentRepository
* @inject
*/
protected $paymentRepository;
/**
* action new
*
* @param \chilischarf\ChiliPayment\Domain\Model\Payment $newPayment
* @dontvalidate $newPayment
* @return void
*/
public function newAction(\chilischarf\ChiliPayment\Domain\Model\Payment $newPayment = NULL) {
$this -> view -> assign('newPayment', $newPayment);
}
/**
* action create
*
* @param \chilischarf\ChiliPayment\Domain\Model\Payment $newPayment
* @return void
*/
public function createAction(\chilischarf\ChiliPayment\Domain\Model\Payment $newPayment) {
$this -> flashMessageContainer -> add('Your new Payment was created.');
}
}
?>
答案 0 :(得分:1)
通常你不希望你的createAction呈现任何东西。您只是希望它验证并保留用户输入,然后重定向到另一个操作,例如,呈现flash消息。话虽如此,您描述的问题可能有多种原因,因此我将指出您可能遇到的一些问题或您的问题可能与之相关:
Resources/Private/Templates/Payment/Create.html
中有Create.html模板吗?这是create动作将呈现的模板。 <f:flashMessages />
viewHelper?因为你没有在你的createAction中为你的视图提供任何东西(如果你不打算在这里渲染任何东西,如上所述,这是完全没问题的),这只是他动态的#34;创建内容。die();
时,可以解决这个问题。提交后,如果您的creatAction成功调用,您将看到一个白页。