====== 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 [[:fr:doc:pxxo_widget_form|Form]].// __Copie d'écran :__ | {{fr:doc:input_query.gif| Exemple Input Query}} | __Démo :__ | {{fr:doc:demo_query.swf?982x283}} | ===== Paramètres ===== Ce widget partage une liste de paramètres 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 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 [[: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());
}