Mniej niż 1 minuta
Poniżej przykładowa klasa SearchEngine, która będzie nam służyć do wyszukiwania w rejestrze cregisters.creg_samochody
o następujących kolumnach:
- id____
- nr_rejestracyjny
- marka
- model
- ent_id
Tylko tyle kolumn wystarczy!
Teraz możemy przejść do zakodowania klasy SearchEngin-a.
Poniżej przykładowa klasa.
W komentarza dodano odpowiednie opisy do czego służą poszczególne właściwości. Na potrzeby przykładu załóżmy że plik z klasą najduje się w ./scripts/CarLib/LookupWidget/CarsSearchEngine.inc
Kod
namespace ReadyApp\CarLib\LookupWidget;
require_once('./classes/LookupWidget/AbsSearchEngine.inc');
/**
* CarsSearchEngine
*
* @uses \AbsSearchEngine
* @final
* @author
* @version 0.1
* @copyright
*/
class CarsSearchEngine extends \AbsSearchEngine {
/**
* Nazwa kolumny z identyfikatorem rekordu
*
* @var string
* @access public
*/
public $keyCol = 'id____';
/**
* Nazwa kolumny, której zawartość wyświetli się w polu Lookup`a po wyszukaniu frazy
*
* @var string
* @access public
*/
public $labelCol = 'label_';
/**
* Kwerenda, służąca do zasilenia silnika w rekordy
*
* @var string
* @access public
*/
public $select = 'SELECT id____, COALESCE(nr_rejestracyjny||\' - \'||marka || \' \'||model, marka || \' \'||model) AS label_ FROM cregisters.creg_samochody';
/**
* Lista pól, po których będzie można szukać
*
* @var array
* @access public
*/
public $fields = ['id____', 'nr_rejestracyjny', 'marka', 'model'];
/**
* Lista pól, po których lista zostanie posortowana
*
* @var string
* @access public
*/
public $order = 'nr_rejestracyjny, marka, model';
/**
* Czy pokazać ikonę po wybraniu rekordu (z lewej strony)
* Ikona musi być zdefiniowana w MapService (lub CustomMapService)
*
* @var bool
* @access public
*/
public $showInfoIcon = FALSE;
/**
* Clsnam z MapService (lub CustomMapService)
* @var string
*/
public $gicon = '';
/**
* @access public
* @return void
*/
public function __construct() {
$this->infoMessage = &$_SESSION[get_class($this)]['infoMessage'];
if (empty($this->infoMessage)) {
//Komunikat jeśli samochodu nie znaleziono
$this->infoMessage = \Translator::translate('Wybrany samochód nie został znaleziony.');
}
parent::__construct();
// Tutaj możemy dodać określone warunki jak context czy sprawdzanie uprawnień per użytkownik
$this->append(' AND ent_id = '.\SysContext::$ent_id.' AND is_del IS NOT TRUE';);
}
}
Plik
Plik z przykładu
Info
Klasa musi dziedziczyć po klasie AbsSearchEngine