![Smarty Forum Index Smarty Forum Index](templates/smarty/images/phpbb2_logo.gif) |
Smarty
WARNING: All discussion is moving to https://reddit.com/r/smarty, please go there! This forum will be closing soon. |
|
View previous topic :: View next topic |
Author |
Message |
mohrt Administrator
Joined: 16 Apr 2003 Posts: 7368 Location: Lincoln Nebraska, USA
|
Posted: Tue Feb 14, 2006 3:13 pm Post subject: |
|
|
Use the latest CVS, I think some problems with append have been addressed. |
|
Back to top |
|
NoWhereMan Smarty Rookie
Joined: 14 Feb 2006 Posts: 15
|
Posted: Tue Feb 14, 2006 3:58 pm Post subject: |
|
|
thanks, just checked it out, now i'm gonna try it ![Smile](images/smiles/icon_smile.gif) |
|
Back to top |
|
gawan Smarty Rookie
Joined: 29 Apr 2003 Posts: 9
|
Posted: Tue Mar 14, 2006 10:50 am Post subject: Validating against a group of elements |
|
|
I would be great to be able to validate a group of form elements together, say, in style "please check at least one of the checkboxes" or "you did not provide any name information" (when there are three edit boxes for name information, and at least in one of them must not be empty).
Any suggestion on how to do this in SmartyValidate? (maybe even an idea for enhancing this plugin?)
gawan |
|
Back to top |
|
mohrt Administrator
Joined: 16 Apr 2003 Posts: 7368 Location: Lincoln Nebraska, USA
|
Posted: Tue Mar 14, 2006 2:21 pm Post subject: |
|
|
You can apply multiple validators to a single form value, otherwise, you can make a custom validator do whatever you want. |
|
Back to top |
|
checat Smarty Rookie
Joined: 05 Feb 2004 Posts: 13 Location: Russia, Saint-Petersburg
|
Posted: Tue Mar 21, 2006 10:30 am Post subject: question |
|
|
I want to ask.
If a person opens two browser windows, can validators for that windows come into conflict? Are there any guidelines? |
|
Back to top |
|
checat Smarty Rookie
Joined: 05 Feb 2004 Posts: 13 Location: Russia, Saint-Petersburg
|
Posted: Fri Mar 24, 2006 10:00 am Post subject: I tried and got a problem |
|
|
Assume user opens in 2 browser windows the same form with different data Say, user wants to send 2 forum messages, but has slow connection and don't want to wait for a single window to reload. So, he opens 2 post forms, fills first form, submits. SmartyValidator gots form data, return 'ok', and script makes 'disconnect'. So, when user submits second form, validator has no clue what those data about.
I find the only possibility: never call 'diconnect'.
But I don't like such a pollution of session data. |
|
Back to top |
|
mohrt Administrator
Joined: 16 Apr 2003 Posts: 7368 Location: Lincoln Nebraska, USA
|
Posted: Fri Mar 24, 2006 4:00 pm Post subject: Re: I tried and got a problem |
|
|
checat wrote: | Assume user opens in 2 browser windows the same form with different data Say, user wants to send 2 forum messages, but has slow connection and don't want to wait for a single window to reload. So, he opens 2 post forms, fills first form, submits. SmartyValidator gots form data, return 'ok', and script makes 'disconnect'. So, when user submits second form, validator has no clue what those data about.
I find the only possibility: never call 'diconnect'.
But I don't like such a pollution of session data. |
This is no different than having multiple forms on one page. Make sure you use a unique form id each time to register a form, and use that id throughout the validation process. |
|
Back to top |
|
checat Smarty Rookie
Joined: 05 Feb 2004 Posts: 13 Location: Russia, Saint-Petersburg
|
Posted: Mon Mar 27, 2006 1:39 pm Post subject: |
|
|
[quote] Make sure you use a unique form id each time to register a form, and use that id throughout the validation process.[/quote]
This still has some minor problems with:
1. Load Form -> Submit -> Back -> Submit
2. Load Form -> Duplicate window ("Duplicate" in Opera, "New" in IE) -> Submit first window -> Submit second Window
Both this cases has no chance to generate new form id since form is not reloaded from server.
3. Pages often contain forms that will rarely be submited by user, but their registration with unique ids fills session data with junk.
It doesn't matter. I've already made my own similar validator class/plugin which doesn't use session at all. |
|
Back to top |
|
polik00 Smarty n00b
Joined: 10 Jun 2006 Posts: 3
|
Posted: Sat Jun 10, 2006 4:33 pm Post subject: |
|
|
Thank you so much!
Last edited by polik00 on Wed May 05, 2010 10:56 pm; edited 1 time in total |
|
Back to top |
|
bensmyth Smarty n00b
Joined: 03 Sep 2004 Posts: 4
|
Posted: Thu Sep 14, 2006 9:19 am Post subject: |
|
|
Is it possible to achieve the following.....
Code: | {validate id="userEmail" append="error" message="You must provide a valid email"}
{validate id="userPassword" append="error" message="You must provide matching passwords"}
{if $error != ''}
{foreach from=$error item="err"}
{$err}<br/>
{/foreach}
{/if}
{if $error.userEmail != ""}
<div class="error">Email:</div>
{else}
Email:
{/if}
<input name="userEmail" id="userEmail" type="text" value="{$userEmail|escape}"/>
{if $error.userEmail != ""}<div class="error">{$error.userEmail}</div>{/if}
..... |
Since error stores enumerative and not assoc, this doesn't seem possible?
On a seperate not, I couldn't get {if $validate.default.is_error} to work |
|
Back to top |
|
SpiffyJr Smarty n00b
Joined: 19 Sep 2007 Posts: 3
|
Posted: Wed Sep 19, 2007 9:28 pm Post subject: |
|
|
Is it possible to do something like the following:
Code: | {section name=i loop=$inputs}
<label for="{$inputs[i].ID}">{$inputs[i].LABEL}</label>
{if $inputs[i].TYPE == text}
{if $inputs[i].Validate}
{validate id="$inputs[i].ValidateID" message="$inputs[i].ValidateMessage"}
{/if}
<input type="text" name="{$inputs[i].NAME}" id="{$inputs[i].ID}">
{/if}
{/section}
|
I setup a form class to generate form fields and validations for me but I'm receiving this error.
Warning: Smarty error: validate: validator id 'Array.ValidateID' is not registered. in B:\web\phpRaider2\includes\class\smarty\Smarty.class.php on line 1095 |
|
Back to top |
|
mohrt Administrator
Joined: 16 Apr 2003 Posts: 7368 Location: Lincoln Nebraska, USA
|
Posted: Wed Sep 19, 2007 9:46 pm Post subject: |
|
|
This is just a syntax problem, get rid of the quotes.
Code: | {validate id=$inputs[i].ValidateID message=$inputs[i].ValidateMessage} |
And, don't repeat your question all over the forum! |
|
Back to top |
|
SpiffyJr Smarty n00b
Joined: 19 Sep 2007 Posts: 3
|
Posted: Thu Sep 20, 2007 2:38 am Post subject: |
|
|
Wasn't sure which location was best
Thanks! I'll check it out. |
|
Back to top |
|
SpiffyJr Smarty n00b
Joined: 19 Sep 2007 Posts: 3
|
Posted: Thu Sep 20, 2007 2:39 am Post subject: |
|
|
Ignore this, I made a mistake! |
|
Back to top |
|
brainwave Smarty Rookie
Joined: 09 Jul 2003 Posts: 22
|
Posted: Tue Jan 08, 2008 4:14 pm Post subject: |
|
|
Hi,
first I just where happy about smarty validate, It is really helpfull and works fine for me on static sites but I have some little problems with it also
1. I don't exactly understand this SmartyValidate::register_validator thing, I expirienced that I have to call this at form generation and not after form submission. If I call connect and register_validator after form submission, right before the is_valid method it wont work. I think I have just a problem looking into the right direction
2. Coming with this issue above, I tried to create a prototype/scriptuclous based ajax form. Its an textfield that will be replaced by a input field and sends a value via get method. Sending the value works finde it reaches the php script but I really don't know how to validate it, because smarty-validate allways says its empty (on notEmpty validation)
Since the value comes to the php script the ajax stuff isn't that important so I don't waste your time with this code
But here is the php code:
Code: | <?php
/*
* Prepare Vars
*/
$_REQUEST['value'] = stripslashes($_REQUEST['value']);
$_REQUEST['value'] = str_replace('"',"'",$_REQUEST['value']);
/*
* Main
*/
if($_REQUEST['op'] == 'save') {
/*
* Check Form
*/
SmartyValidate::connect($tpl, true);
SmartyValidate::register_validator('fvalue','value','notEmpty');
if(SmartyValidate::is_valid($_GET)) {
$result = $system->query(" INSERT INTO user_demand
(uid, value, duration, date)
VALUES
('{$system->user['uid']}', '{$_REQUEST['value']}', '60', NOW())
ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id), value = VALUES(value), duration = VALUES(duration), date = VALUES(date)");
if($result) {
$tpl->assign('ajaxout', I_CREATED);
} else {
$tpl->assign('ajaxout', E_CREATED);
}
SmartyValidate::disconnect();
} else { echo "<br \>invalid form!";
}
} elseif($_REQUEST['op'] == 'edit') {
if(!empty($_REQUEST['id'])) {
$result = $system->query(" SELECT id, value
FROM user_demand
WHERE id = '{$_REQUEST['id']}'");
$data = $system->fetch($result);
$_REQUEST['id'] = $data['id'];
$_REQUEST['value'] = $data['value'];
$_REQUEST['op2'] = true;
} else {
$tpl->assign('ajaxout', E_INVALIDID);
}
}
/*
* TPL
*/
$tpl->assign('content',array( 'id' => $_REQUEST['id'],
'value' => $_REQUEST['value']));
//echo "<pre>"; print_r($_REQUEST); echo "</pre>";
?> |
and the template:
Code: | {$content.value} {$ajaxout} {validate id="fvalue" message="##F_TEXT##"} |
ah and things like session_start() where allreay beeing called by my cms system.
Hope someone could direct me into the right direction
Rgds |
|
Back to top |
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|
|