TYPO3扩展createAction没有任何反应

时间:2014-06-03 15:28:07

标签: php forms input typo3 extbase

我目前正在尝试编写一个简单的输入表单扩展名:用户输入输入字段值,提交操作将值插入数据库,然后重定向到外部支付服务。

不幸的是,点击提交按钮后,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.');
        }
    }
    ?>

1 个答案:

答案 0 :(得分:1)

通常你不希望你的createAction呈现任何东西。您只是希望它验证并保留用户输入,然后重定向到另一个操作,例如,呈现flash消息。话虽如此,您描述的问题可能有多种原因,因此我将指出您可能遇到的一些问题或您的问题可能与之相关:

  1. 您在Resources/Private/Templates/Payment/Create.html中有Create.html模板吗?这是create动作将呈现的模板。
  2. 此模板中是否有<f:flashMessages /> viewHelper?因为你没有在你的createAction中为你的视图提供任何东西(如果你不打算在这里渲染任何东西,如上所述,这是完全没问题的),这只是他动态的#34;创建内容。
  3. 提交表单后是否到达了createAction?或者是验证出错的情况(在这种情况下,您将被重定向回到您的newAction,并使用默认的flashMessage,在尝试调用createAction时发生错误)?当您向createAction添加die();时,可以解决这个问题。提交后,如果您的creatAction成功调用,您将看到一个白页。
  4. 是&#39;创造&#39;在ext_localconf.php中配置的控制器的有效操作?如果没有,请添加它。