[TYPO3-project-formidable] New Features in renderer template: Set your own errorWrap etc.
Hauke Hain
newgrp at googlemail.com
Thu Feb 26 22:32:12 CET 2009
Hello,
template/errorTag as described here:
http://formidable.typo3.ug/reference/control/renderertemplate.html
Your errortag ({myerrortag.mytxt1.tag}) will be wrapped with
<span class="errors">{myerrortag.mytxt1}</span>
I changed the template renderer so that you can choose how it should be
wrapped.
On top of that you can say that each errormessage gets wrapped even if you
dosplay all at once with this code:
<div style="display: {myerrortag.cssdisplay};">
{myerrortag} <!-- each error is wraped with the standard tag or your
setting -->
</div>
This can be useful if you want to have your errormessages in a list.
So you can use this
<ul style="display: {myerrortag.cssdisplay};">
<li style="display:
{myerrortag.renderlet1.cssdisplay};">{myerrortag.renderlet1}</li>
<li style="display:
{myerrortag.renderlet2.cssdisplay};">{myerrortag.renderlet2}</li>
<li style="display:
{myerrortag.renderlet3.cssdisplay};">{myerrortag.renderlet2}</li>
</ul>
or this code
<ul style="display: {myerrortag.cssdisplay};">
{myerrortag} <!-- each error is wraped with the standard tag or your
setting -->
</ul>
and this XML-Configuration:
<renderer:TEMPLATE>
<template
path=""
subpart=""
errorTag=""
errorTagWrapAlways="True"
errorTagCompiledNoBR="True">
<errorTagWrap><![CDATA[<span>]]>|<![CDATA[</span>]]></errorTagWrap>
</template>
</renderer:TEMPLATE>
in order to get your errormessages in an unordered list.
As you can see I added one more configuration: errorTagCompiledNoBR="True"
If set, the compiled errormessages (all messages as one string) are not
separated by a <br/>-Tag.
This is handy if you set a wrap that makes the br-Tag redundant or in worst
case it makes your webpage invalid.
My Solution:
ameos_formidable\api\base\rdr_template\api\class.tx_rdrtemplate.php
I replaced row 133 to 140.
REPLACE:
$aCompiledErrors[] = $this->oForm->_aValidationErrors[$sRdtName];
$aErrors[$sShortRdtName] = $this->oForm->_aValidationErrors[$sRdtName];
$aErrors[$sShortRdtName . "."]["tag"] = "<span class='errors'>" .
$this->oForm->_aValidationErrors[$sRdtName] . "</span>";
}
}
$aErrors["__compiled"] = implode("<br />", $aCompiledErrors);
WITH:
$aErrors[$sShortRdtName] =
$this->oForm->_aValidationErrors[$sRdtName];debug($this->_navConf);
if(($errWrap = $this->_navConf("/template/errortagwrap")) !== FALSE) {
if($this->oForm->isRunneable($errWrap)) {
$errWrap = $this->callRunneable($errWrap);
}
$errWrap = $this->oForm->_substLLLInHtml($errWrap);
} else {
$errWrap = "<span class='errors'>|</span>";
}
$aErrors[$sShortRdtName . "."]["tag"] = str_replace("|",
$this->oForm->_aValidationErrors[$sRdtName], $errWrap);
if(strtolower(trim($this->_navConf("/template/errortagwrapalways")))
== "true") {
$aCompiledErrors[] = str_replace("|",
$this->oForm->_aValidationErrors[$sRdtName], $errWrap);
} else {
$aCompiledErrors[] = $this->oForm->_aValidationErrors[$sRdtName];
}
}
}
if(strtolower(trim($this->_navConf("/template/errortagcompilednobr")))
== "true") {
$aErrors["__compiled"] = array();
$aErrors["__compiled"] = implode($aCompiledErrors);
} else {
$aErrors["__compiled"] = implode("<br />", $aCompiledErrors);
}
I added my new file. I hope this is something that can be applied to the
svn-version.
Pleaso note that tjis works only with the renderer template. You have to
make equally changes to the other renderlets, if you want the same
functionality.
Perhaps the STANDARD renderer is interesting. Here you have to adjust the
following lines:
You have to change ameos_formidable\api\base\rdr_std\api\class.tx_rdrstd.php
in line 18-20:
if(!$this->oForm->oDataHandler->_allIsValid()) {
$sValidationErrors = "<div class='errors'><div class='error'>" .
implode("</div><div class='error'>",
$this->oForm->_aValidationErrorsByHtmlId) . "</div></div><hr
class='separator' />";
}
Regards,
Hauke
More information about the TYPO3-project-formidable
mailing list