我目前正在尝试编写一个简单的输入表单扩展名:用户输入输入字段值,submit操作将这些值插入数据库,然后重定向到外部支付服务。
不幸的是,单击“提交”按钮后,createAction函数不会显示任何反应。
出于测试目的,我只想在Submit之后输出文本。但那甚至行不通。
如果我在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>
......
类/控制器/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.');
}
}
?>
通常,您不希望createAction呈现任何内容。您只希望它验证并保留用户输入,然后重定向到另一个操作,例如,呈现Flash消息。就是说,您描述的问题可能有多种原因,因此,我将指出您可能遇到的一些问题,或者您的问题可能与以下方面有关:
Resources/Private/Templates/Payment/Create.html
?这是create操作将呈现的模板。<f:flashMessages />
该模板中是否有viewHelper?由于您没有在createAction中将任何内容关联到您的视图(如上所述,如果您不打算在此处呈现任何内容,这是完全可以的),这就是他仅“动态”创建的内容。die();
到createAction中时,您可以弄清楚。提交后,如果您成功调用了creatAction,则会看到一个白页。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句