이 기사에서는 두 개의 개별 양식과 Drupal의 핵심 임시 데이터 저장을 사용하여 Drupal 8에 다단계 양식을 구축하는 것을 보여줍니다. 설명을 간소화하고 흐름을 개선합시다
주요 개념 :
두 가지 독립적 인 형태 : 다중 단계 양식은 두 가지 고유 한 형태로 구성되며 각각은 사용자 입력의 서브 세트를 처리합니다.
추상 기본 클래스 (MultistePformBase) : 의존성 주입, 형태 스캐 폴딩 및 데이터 처리와 같은 공통 기능은 추상 기본 클래스에 중앙 집중화됩니다. 이것은 코드 재사용 성과 유지 관리를 촉진합니다
privateTempstore : Drupal 's 는 여러 요청에 걸쳐 데이터 지속성을 보장하여 다단계 프로세스를 가능하게합니다.
경로 정의 : 별도의 경로가 각 양식에 대해 정의되어 단계 간의 탐색이 가능합니다.
구현 세부 사항 :
솔루션은 다음과 관련이 있습니다
-
multistepformbase.php : 이 추상 기본 클래스는 일반적인 작업을 처리합니다
의존성 주입 : 인젝트 , - 및
세션 관리 : 익명 사용자를위한 세션이 존재하도록합니다
데이터 저장 : 를 사용하여 양식 데이터를 저장 ( 데이터 저장 () : 실제 데이터 저장 로직을위한 자리 표시 자 (구현은 특정 요구에 따라 다름).
data deletion (
-
multisteponeform.php : 첫 번째 형태 :
PrivateTempStore
는 -
에는 두 개의 필드가 포함되어 있습니다
사전 인구에 대해 <strong>에서 이전에 입력 한 값을 검색합니다
<s> 제출시 </s></strong>로 리디렉션됩니다
</prev></f>
</li>
</ion></uses></ens>
</li></ection></ves>
</ul>
<p>
multisteptwoform.php : <strong> 두 번째 형태 :
</strong>
</p>는 <p>
<f>에는 두 개의 필드가 포함되어 있습니다
<prev>
<previous>에는 "이전"링크가
<li>는 제출시 기본 클래스에서 를 호출 한 다음 다시 리디렉션합니다.
<p>
<strong>
</strong>
demo.routing.yml : </p> 및
</li><li>
<code>PrivateTempStoreFactory</code> 예시적인 스크린 샷 : <code>SessionManagerInterface</code>
<code>AccountInterface</code> </li><p> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173975587151440.jpg" class="lazy" alt="How to Build Multi-step Forms in Drupal 8 ">
코드 스 니펫 (그림) : </p>
<p> (multistepformbase.php -Excerpt) : <strong>
</strong>
</p> (multisteponeform.php -Excerpt) : <p>
<strong>
</strong> 결론 : </p>
이 접근법은 Drupal 8에서 다중 단계 양식을 만들 수있는 깨끗하고 효율적인 방법을 제공하여 교차 요청 데이터 관리를 위해 <pre class="brush:php;toolbar:false"><code class="language-php">protected function saveData() {
// Save data (e.g., create a configuration entity)
$this->deleteStore();
drupal_set_message($this->t('Form saved!'));
}</code>의 힘을 활용합니다. 추상 기본 클래스의 사용은 코드 조직 및 재사용 성을 촉진합니다. 이 구조는 더 많은 단계를 수용하기 위해 쉽게 확장 될 수 있습니다. 기사 본문이 이미 필수 측면을 다루기 때문에 FAQ 섹션은 간결하게 생략됩니다.
위 내용은 Drupal 8에서 다중 단계 양식을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!