質問

現在簡単な入力フォーム拡張を書き込もうとしています:ユーザーが入力フィールド値を入力し、送信アクションはその値をデータベースに挿入してから外部の支払いサービスにリダイレクトします。

残念ながら、CreateAction関数は、送信ボタンをクリックした後に反応を示さない。

テスト目的のために、送信の後にテキストを出力したいだけです。しかし、それでもそれでさえありません。

新人で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>

    ......
.

クラス/コントローラ/ dapaycontroller.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. Resources/Private/Templates/Payment/Create.htmlにcreate.htmlテンプレートがありますか?これはテンプレート作成アクションがレンダリングされます。
  2. このテンプレートに<f:flashMessages /> ViewHelperがありますか?あなたがあなたのクレイズアクションのあなたの見解に何かをお勧めしないので(上記のようにここで何かをレンダリングする予定の場合は完全に大丈夫です)これは「動的に」作成されたコンテンツだけです。
  3. あなたのフォームを提出した後、あなたはあなたの作動反応に達しますか?あるいは、検証が間違っていることが間違っていることです(その場合は、CreateActionの呼び出し中にエラーが発生したデフォルトのFlashMessageであなたの新人にリダイレクトされます)? CreateActionにdie();を追加すると、それを理解することができます。あなたのCreatactionが正常に呼ばれていれば、あなたはホワイトページを送信した後、あなたはホワイトページを表示します。
  4. ext_localconf.phpで設定されているようにコントローラの有効なアクションを 'create'です。そうでなければ、それを追加してください。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top