array(
"PREDICATE_IDENTIFIER" => array(
"designation" => "comparer avec",
"type" => "string", // type = ['string' | 'numeric' | 'date' | 'boolean'],
"mysql" => "%association(%subject LIKE '%value')", // template for mysql query language
"querylanguage2" => "template_expression", // template for another query language
)
...
)
|
| subjects | Array | array() | Décrit quels prédicats peuvent être utilisés avec quels sujets pour construire les critères. Ce paramètre doit respecter le format suivant : \\
array(
'subject_identifier' => array(
'designation' => 'the designation...',
'predicates' => array('PREDICATE1_IDENTIFIER','PREDICATE2_IDENTIFIER'...)
)
...
)
|
| value | Array | array(...)| Décrit les valeurs initiales de la requête (càd une liste de critères). Ce paramètre doit respecter le format suivant : \\
array(
array( 'association' => '',
'subject' => 'subject_identifier',
'predicate' => 'PREDICATE_IDENTIFIER',
'value' => 'the_value'
)
...
)
|
| query_language | String| 'mysql' | Choisit un langage de requête. Ce paramètre est utilisé pour selectionner le template approprié pour construire un critère. Exemple : 'mysql', 'bourneshell', 'cql', 'google', 'xpath'... |
===== Méthodes =====
Ce widget partage une liste de méthodes génériques communs à tous les widgets Input. Veuillez consulter la [[:fr:doc:pxxo_widget_input|documentation du widget Input]] pour connaître la liste des méthodes génériques.
Voici les méthodes spécifiques pour ce widget :
^ Nom ^ Paramètre = Valeur par défaut ^ Valeur de retour ^ Description ^
| get_query | //criteria// = Dernière requête soumise ou valeurs initiales \\ //predicates// = Prédicats par défauts et personnalisés \\ //query_language// = Propriété query_language du widget | String | __Valeur de retour :__ \\ Une requête est générée dans le language demandé à partir des critères et des prédicats fournis\\ __Paramètres :__ \\ - //criteria// : Liste de critères à utiliser \\ - //predicates// : Tableau de description des prédicats à utiliser \\ - //query_language// : Langage de requête à utiliser \\ |
===== Exemple =====
Voici un exemple d'utilisation du widget.
ini_set('include_path', strtr('.:../../pxxo:../../widgets:', ':/', PATH_SEPARATOR.DIRECTORY_SEPARATOR).ini_get('include_path'));
require_once "Pxxo/Widget/Form.php";
// Paramètres Input_Query
$params_input_query = array(
// Réglages pour PXXO
'ResourcePath' => rtrim(dirname(__FILE__), DIRECTORY_SEPARATOR).'/rsc',
'ResourceURL' => rtrim(dirname($_SERVER['PHP_SELF']), DIRECTORY_SEPARATOR).'/rsc',
'Lang' => 'fr',
'CacheMode' => false,
// Paramètres spécifiques au widget Input_Query
'id' => 'query',
'value' => array(), // par défaut aucun filtre
'type' => 'Query',
'subjects' => array(
'nom' => array(
'designation'=>'Nom du chat',
'predicates'=>array('LIKE')
),
'signes' => array(
'designation'=>'Signes particuliers',
'predicates'=>array('CONTAINS')
),
'chatons' => array(
'designation'=>'Nombre de chatons',
'predicates'=>array('NUMERIC_EQUAL','NUMERIC_SUP','NUMERIC_INF')
),
'date_naissance' => array(
'designation'=>'Date de naissance',
'predicates'=>array('DATE_EQUAL','DATE_SUP','DATE_INF')
)
)
);
// Paramètres Form
$params_form = array(
// Réglages pour PXXO
'ResourcePath' => rtrim(dirname(__FILE__), DIRECTORY_SEPARATOR).'/rsc',
'ResourceURL' => rtrim(dirname($_SERVER['PHP_SELF']), DIRECTORY_SEPARATOR).'/rsc',
'Lang' => 'fr',
'CacheMode' => false,
// Paramètres spécifiques au widget Form
'inputs' => array($params_input_query),
'submit_label' => 'Rechercher...'
);
// On instancie le formulaire qui contient le Input_Query
$form_query = new Pxxo_Widget_Form($params_form);
$form_query->addDecorator('Pxxo_Widget_Decorator_Core');
$form_query->main();
$form_query->dump();
// Affichage de la requête
if (count($form_query->getErrors())==0)
{
echo '';
echo 'print_r($form_query->getInputWidget(\'query\')->get_query());'."\n";
print_r($form_query->getInputWidget('query')->get_query());
}