문제

현재 간단한 입력 양식 확장을 작성하려고 합니다.사용자가 입력 필드 값을 입력하면 제출 작업이 해당 값을 데이터베이스에 삽입한 다음 외부 결제 서비스로 리디렉션됩니다.

불행하게도 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.');
        }
    }
    ?>
도움이 되었습니까?

해결책

일반적으로 createAction이 아무것도 렌더링하는 것을 원하지 않습니다.사용자 입력을 검증하고 유지한 다음 다른 작업으로 리디렉션하기를 원합니다.플래시 메시지가 렌더링됩니다.즉, 귀하가 설명하는 문제에는 여러 가지 원인이 있을 수 있으므로 귀하가 겪을 수 있는 몇 가지 문제 또는 다음과 관련될 수 있는 문제를 지적하겠습니다.

  1. Create.html 템플릿이 있습니까? Resources/Private/Templates/Payment/Create.html?이는 생성 작업이 렌더링할 템플릿입니다.
  2. 당신은 가지고 있습니까? <f:flashMessages /> 이 템플릿에 viewHelper가 있나요?createAction에서 뷰에 아무 것도 할당하지 않기 때문에(위에서 언급한 것처럼 여기서 아무것도 렌더링할 계획이 없다면 완벽하게 괜찮습니다) 이는 그가 "동적으로" 생성한 콘텐츠일 뿐입니다.
  3. 양식을 제출한 후 createAction에 도달합니까?아니면 유효성 검사에 문제가 있습니까(이 경우 createAction을 호출하는 동안 오류가 발생했다는 기본 flashMessage와 함께 newAction으로 다시 리디렉션됩니다)?이를 추가하면 알 수 있습니다. die(); 귀하의 createAction에.제출 후 creatAction이 성공적으로 호출되면 흰색 페이지가 표시됩니다.
  4. ext_localconf.php에 구성된 대로 컨트롤러에 대해 '생성'이 유효한 작업입니까?그렇지 않은 경우 추가하십시오.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top