Pxxo_Widget_Input_Query

Affiche une interface permettant de définir des critères de recherche. Un critère est composé d'une conjonction (ET, OU, etc..) , d'un sujet (ce qu'on recherche), d'un prédicat (une opération de comparaison) et d'une valeur. On peut ajouter ou supprimer des critères comme l'on veut. Le widget renvoie un tableau décrivant les critères mais peut aussi générer la requête dans un langage donné.

Remarque : Ce widget peut-être utilisé tout seul mais en général il est directement utilisé par le widget Form.

Copie d'écran :

 Exemple Input Query

Démo :

Paramètres

Ce widget partage une liste de paramètres génériques communs à tous les widgets Input. Veuillez consulter la documentation du widget Input pour connaître la liste des paramètres génériques.

Voici les paramètres spécifiques pour ce widget :

Nom Type Valeur par défaut Description
personal_predicates Array array() Décrit les propriétés des prédicats personnalisés. Ces propriétés sont utilisées pour construire la requête dans le langage désiré. Ce paramètre doit respecter le format suivant :
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 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 '<pre>';
  echo 'print_r($form_query->getInputWidget(\'query\')->get_query());'."\n";
  print_r($form_query->getInputWidget('query')->get_query());
}
fr/doc/pxxo_widget_input_query.txt · Dernière modification: 2008/08/27 15:49 par 193.54.109.8
 
 
Recent changes RSS feed Valid XHTML 1.0 Valid CSS Powered by PHP Driven by DokuWiki
©2003-2008 Pxxo