[TYPO3-project-formidable] How to have hidden fields with a fixed value?

Jerome Schneider j.schneider at ameos.com
Thu Jan 11 09:40:41 CET 2007


Hello Oliver,

In PHP, there is a simple manner to test if a form has benn submitted:

($this->oForm->oDataHandler->_isFullySubmitted() && 
$this->Form->oDataHandler->_allIsValid())


Providing that $this->oForm points to your Formidable object


Hope this helps,
Jerome Schneider

Oliver Klee a écrit :
> Hi,
> 
> I'm trying to build a semi-two-page form. For this, I use the submit
> button of the first page to call a user function which then sets a
> variable. My _render function now checks for this variable and then
> re-inits the form with a different template (for the second form).
> 
> Now I'd like to check whether the *second* form has been submitted. For
> this, I'd like to have a hidden variable with a fixed value (that gets
> used even when the first form (and thus the complete form) has already
> been submitted once). If I understand it correctly, hidden fields take
> their value from the POST data if the form has already been submitted,
> so I cannot use the default value for the fixed value.
> 
> May code looks like this:
> 
> [first form]
> 
> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
> <formidable version="0.5.0">
> 	<meta>
> ...
> 	</meta>
> 	<control>
> 		<datahandler:RAW>
> 			<parentcallback>showConfirmationPage</parentcallback>
> 		</datahandler:RAW>
> 		<renderer:STANDARD>
> 		</renderer:STANDARD>
> 	</control>
> ...
> 
> 
> PHP code:
> 
> 	/**
> 	 * Shows the confirmation page.
> 	 *
> 	 * @param	array		the entered form data with the field names as array
> keys (including the submit button ...)
> 	 *
> 	 * @access	public
> 	 */
> 	function showConfirmationPage($parameters) {
> 		$this->isConfirmationPage = true;
> 
> 		return;
> 	}
> 
> 	/**
> 	 * Initializes the create/edit form.
> 	 *
> 	 * @access	protected
> 	 */
> 	function _initForms() {
> 		$this->oForm =& t3lib_div::makeInstance('tx_ameosformidable');
> 
> 		$xmlFile = (!$this->isConfirmationPage) ?
> 			'registration_editor.xml' : 'registration_editor_step2.xml';
> 
> 		$this->oForm->init(
> 			$this,
> 			t3lib_extmgm::extPath($this->extKey).'pi1/'.$xmlFile,
> 			$this->iEdition
> 		);
> 
> 		return;
> 	}
> 
> 
> 	/**
> 	 * Creates the HTML output.
> 	 *
> 	 * @return 	string		HTML of the create/edit form
> 	 *
> 	 * @access	public
> 	 */
> 	function _render() {
> 		$result = $this->oForm->_render();
> 		// For the confirmation page, we need to reload the whole thing.
> 		if ($this->isConfirmationPage) {
> 			$this->_initForms();
> 			$result = $this->oForm->_render();
> 		}
> 		return $result;
> 	}
> 
> 
> The second form:
> 
> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
> <formidable version="0.5.0">
> 	<meta>
> ...	</meta>
> 	<control>
> 		<datahandler:RAW>
> 			<parentcallback>processRegistration</parentcallback>
> 		</datahandler:RAW>
> 		<renderer:STANDARD>
> 		</renderer:STANDARD>
> 		<actionlets>
> 			<actionlet:REDIRECT>
> 				<url>
> 					<userobj>
> 						<extension>this</extension>
> 						<method>getThankYouAfterRegistrationUrl</method>
> 					</userobj>
> 				</url>
> 			</actionlet:REDIRECT>
> 		</actionlets>
> 	</control>
> 
> 
> (and all fields from the first page as hidden fields so that the data is
> kept)
> 
> 
> I'd like to detect when the second page has been submitted - either with
> hidden fields or any other way. How could I do this?
> 
> Thanks in advance,
> 
> 
> Oliver


More information about the TYPO3-project-formidable mailing list