9
« il: 23 Gen 2014, 19:06:00 »
Grazie ancora Simone,
Ho inserito la stringa che dici tu e il messaggio alternativo funziona alla grande:
class JFormRuleCodicefiscale extends JFormRule
{
/*Controlla se il codice fiscale o la partita iva sono stati inseriti nel formato corretto*/
protected $regex = '^([0-9]{11})$|^([a-zA-Z]{6}[0-9]{2}[a-zA-Z]{1}[0-9]{2}[a-zA-Z]{1}[0-9]{3}[a-zA-Z]{1})$|^([a-zA-Z]{2}[0-9]{11})$';
/*Controlla che già non esista un record con la stessa partita iva o codice fiscale*/
public function test(&$element, $value, $group = null, &$input = null, &$form = null)
{
// Test the value against the regular expression.
if (!parent::test($element, $value, $group, $input, $form))
{
return false;
}
// Get the database object and a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Build the query.
$query->select('COUNT(*)');
$query->from('#__acc_partecipanti');
$query->where('codice_fiscale = ' . $db->quote($value));
// Get the extra field check attribute.
$userId = ($form instanceof JForm) ? $form->getValue('id') : '';
$query->where($db->quoteName('id') . ' <> ' . (int) $userId);
// Set and query the database.
$db->setQuery($query);
$duplicate = (bool) $db->loadResult();
// Check for a database error.
if ($db->getErrorNum())
{
JError::raiseWarning(500, $db->getErrorMsg());
}
if ($duplicate)
{
$form->setFieldAttribute((string)$element['name'], 'message', (string)$element['message2']);
return false;
}
return true;
}
}
come vedi ho anche inserito
// Get the extra field check attribute.
$userId = ($form instanceof JForm) ? $form->getValue('id') : '';
$query->where($db->quoteName('id') . ' <> ' . (int) $userId);
perchè in effetti non mi permette di fare nessuna modifica in quanto vede che esiste un'altra partita iva uguale nel db, però nonostante abbia inserito questo codice continua ancora a darmi errore in fase di modifica.
ti posto anche il file xml del form, anche se non so se può aiutare:
<?xml version="1.0" encoding="UTF-8"?>
<form addrulepath="/administrator/components/com_accontratti/models/rules">
<fieldset>
<field
name="id"
type="hidden" />
<field
name="ragione_sociale"
type="text"
label="COM_ACCONTRATTI_RAGIONE_SOCIALE"
class="inputbox"
required="true" />
<field
name="codice_fiscale"
size="16"
type="text"
label="COM_ACCONTRATTI_CODICE_FISCALE"
class="inputbox"
validate="codicefiscale"
message="COM_ACCONTRATTI_CODICE_FISCALE_ERRORE"
message2="COM_ACCONTRATTI_CODICE_FISCALE_ESISTE_ERRORE"
required="true" />
<field
name="azienda_madre"
type="aziendamadre"
label="COM_ACCONTRATTI_AZIENDA_MADRE"
class="inputbox" />
<field
name="id_fiscale_estero"
type="text"
label="COM_ACCONTRATTI_ID_FISCALE_ESTERO"
class="inputbox" />
<field
name="ruolo"
type="text"
label="COM_ACCONTRATTI_RUOLO"
class="inputbox" />
<field
name="id"
type="text"
default="0"
readonly="true"
class="readonly"
label="JGLOBAL_FIELD_ID_LABEL"
description ="JGLOBAL_FIELD_ID_DESC" />
</fieldset>
</form>
So che è presente due volte il campo id, ma provando a togliere il primo in alto "hidden" il risulatato è sempre lo stesso..
Grazie ancora