TYPO3 확장 createAction 아무 일도 일어나지 않습니다
문제
현재 간단한 입력 양식 확장을 작성하려고 합니다.사용자가 입력 필드 값을 입력하면 제출 작업이 해당 값을 데이터베이스에 삽입한 다음 외부 결제 서비스로 리디렉션됩니다.
불행하게도 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이 아무것도 렌더링하는 것을 원하지 않습니다.사용자 입력을 검증하고 유지한 다음 다른 작업으로 리디렉션하기를 원합니다.플래시 메시지가 렌더링됩니다.즉, 귀하가 설명하는 문제에는 여러 가지 원인이 있을 수 있으므로 귀하가 겪을 수 있는 몇 가지 문제 또는 다음과 관련될 수 있는 문제를 지적하겠습니다.
- Create.html 템플릿이 있습니까?
Resources/Private/Templates/Payment/Create.html
?이는 생성 작업이 렌더링할 템플릿입니다. - 당신은 가지고 있습니까?
<f:flashMessages />
이 템플릿에 viewHelper가 있나요?createAction에서 뷰에 아무 것도 할당하지 않기 때문에(위에서 언급한 것처럼 여기서 아무것도 렌더링할 계획이 없다면 완벽하게 괜찮습니다) 이는 그가 "동적으로" 생성한 콘텐츠일 뿐입니다. - 양식을 제출한 후 createAction에 도달합니까?아니면 유효성 검사에 문제가 있습니까(이 경우 createAction을 호출하는 동안 오류가 발생했다는 기본 flashMessage와 함께 newAction으로 다시 리디렉션됩니다)?이를 추가하면 알 수 있습니다.
die();
귀하의 createAction에.제출 후 creatAction이 성공적으로 호출되면 흰색 페이지가 표시됩니다. - ext_localconf.php에 구성된 대로 컨트롤러에 대해 '생성'이 유효한 작업입니까?그렇지 않은 경우 추가하십시오.
제휴하지 않습니다 StackOverflow