【问题标题】:TYPO3 extension createAction nothing happensTYPO3 扩展 createAction 没有任何反应
【发布时间】:2014-06-03 15:28:07
【问题描述】:

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

很遗憾,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>

    ......

类/控制器/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.');
        }
    }
    ?>

【问题讨论】:

    标签: php forms input typo3 extbase


    【解决方案1】:

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

    1. Resources/Private/Templates/Payment/Create.html 中是否有 Create.html 模板?这是创建操作将呈现的模板。
    2. 此模板中是否有&lt;f:flashMessages /&gt; viewHelper?由于您没有在 createAction 中为您的视图分配任何内容(如上所述,如果您不打算在此处渲染任何内容,这很好),所以他只是“动态”创建的内容。
    3. 您在提交表单后是否到达了您的 createAction?还是验证出了问题(在这种情况下,您将被重定向回您的 newAction,并使用默认的 flashMessage,说明在尝试调用 createAction 时发生错误)?当您将 die(); 添加到您的 createAction 时,您可以弄清楚这一点。提交后,如果您的 creatAction 调用成功,您会看到一个白页。
    4. 对于您的控制器,“创建”是否是您在 ext_localconf.php 中配置的有效操作?如果没有,请添加它。

    【讨论】:

    • 非常感谢 - 这解决了我的问题:我错误地假设 createAction 保留在新模板上。正如您所建议的,我创建了一个创建模板并确保所有内容都在 ext_localconf.php 中注册。现在测试输出工作了!
    猜你喜欢
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    相关资源
    最近更新 更多