/**
* CRUD-Meisterklasse
* @author bluehire
*/
class SCrud {
const PATH_VIEW='crud'; //Pfadname anzeigen
/**
* Aktuelle Listenoperationskonfiguration
* @var SCrudOperation
*/
public $operation;
/**
* Datenzugriffsobjekt
* @var STable
*/
public $model;
private $table; // Haupttabellenname
private $config; array
public $fields; //array aller Feldobjekte
public $title; //aktueller Geschäftstitel des gesamten CRUD
public $pageSize=20; //list paging size
public $pageSort='id'; //Sortierungsbasis der Liste
public $pageDir='desc'; //Sortierrichtung der Liste
public $rowNo=true; //Ob die Liste Zeilennummern anzeigt
/**
* Filtern in Listen
* @var-Abschluss
*/
public $gridFilter;
//Ob es die folgenden Operationen gibt
public $operationView=true;
public $operationInsert=true;
public $ operationUpdate=true;
public $operationDelete=true;
public $operationMultiDelete=true;
//Der Controller- und Aktionsname der aktuellen Anfrage, der für spätere Verknüpfungen mit Hyperlinks verwendet wird
private $ controller;
private $action;
/**
*
* @param unbekannt $table Haupttabellenname
* @param unbekannt $controller Controllername
* @param unbekannt $action Aktionsname
*/
public function __construct($table, $controller, $action) {
$this ->table = $table;
$this->controller = $controller;
$this->action = $action;
// Verschiedene Konfigurationsobjekte generieren
$ this-> config = config ( 'crud/' . $table );
foreach ( $this->config as $c => $v ) {
if (strpos ( $c, '_ ' ) == = 0) {
$n = substr ( $c, 1 );
$this->$n = $v;
} else {
$this-> Felder [$c ] = new SCrudField ( $this, $v );
}
}
//Titel dieser Funktion
$this->title=$this-> ;title?: $table.'Management';
//Alle Operationssätze
$this->operation = new SCrudOperationSet ( $this );
//Datenzugriffsmodell
$ this->model = table($table);
}
/**
* Nimm ein Feld
*
* @param unbekannter $name
* @return SCrudField
*/
public function field($name) {
if ( ! isset ( $ this->fields [$name] )) {
return null;
}
return $this->fields [$name];
}
/**
* Holen Sie sich den Primärschlüsselfeldnamen dieser Tabelle
* @return SCrudField
*/
public function getPrimaryField() {
// Alle Felder anzeigen
foreach ( $this->fields as $field ) {
// Der Primärschlüssel Feld muss abgefragt werden
if ($field->primaryKey) {
return $field;
}
}
return false;
}
/**
* Alle Felder abrufen, nach denen sortiert werden kann
* @return array of SCrudField
*/
public function listSortable(){
return array_filter ( $this->fields, function ($f) {
return $f->isSortable ();
} );
}
/**
* Alle durchsuchbaren Felder abrufen
* @return multitype:
*/
public function listSearchable(){
return array_filter ( $this->fields, function ($f ) {
return $ f->isSearchable ();
} );
}
/**
* Holen Sie sich die Felder aller teilnehmenden Listen
* @return multitype:
*/
public function listGridable(){
return array_filter ( $this- >fields, function ($f) {
return $f->isGridable ();
} );
}
/**
* Alle an der Anzeige beteiligten Felder abrufen
* @return multitype:
*/
public function listViewable(){
return array_filter ( $this->fields, function ($f) {
return $f->isViewable ();
} ) ;
}
/**
* Alle an der Erstellung beteiligten Felder abrufen
* @return multitype:
*/
public function listInsertable(){
return array_filter ( $this->fields, function ($f) {
return $f->isInsertable ();
} );
}
/**
* Alle an der Bearbeitung beteiligten Felder abrufen
* @return multitype:
*/
public function listUpdatable(){
return array_filter ( $ this->fields, function ($f) {
return $f->isUpdatable ();
} );
}
/**
* Alle Erstellungszeitfelder abrufen, normalerweise nur eines
* @return multitype:
*/
public function listCreated() {
return array_filter ( $this->fields, function ($field) {
return $field->isCreated;
} );
}
/**
* Alle Änderungszeitfelder abrufen, normalerweise nur eines
* @return multitype:
*/
public function listUpdated(){
return array_filter ( $this->fields, function ($field) {
return $field->isUpdated ;
} );
}
/**
* URL erstellen
*
* @param unbekannte $methode
* Der dritte Systemparameter (Name ist auf m festgelegt)
* @param unbekannte $params
* Andere Parameter
* @return string
*/
public function url($method, $params = array()) {
return STemplate:: append ( LUrl::ice ( ) . '/', array_merge ( $params, array (
'c' => $this->controller,
'a' => $this->action,
'm' => $method
) );
}
/**
* Fügen Sie eine gemeinsame Mehrfachauswahloperation hinzu
*
* @return SCrudOperationMulti
*/
öffentliche Funktion operationMulti($method) {
return $this->operation->add ( new SCrudOperationMulti ( $this, $method ) );
}
/**
* Fügen Sie eine gemeinsame einzeilige Operation hinzu
*
* @return SCrudOperationRow
*/
public function operationRow($method) {
return $this->operation->add ( new SCrudOperationRow ( $ this, $method ) );
}
/**
* Fügen Sie eine allgemeine vollständige Tabellenoperation hinzu
*
* @return SCrudOperationTable
*/
public function operationTable($method) {
return $this->operation->add ( new SCrudOperationTable ( $this, $method ) );
}
/**
* Verarbeitung von Anfragen, implementiert durch Operationsklassen
*
* @param SRequest $req
*/
public function process(SRequest $req) {
//Vor der Verarbeitung, Initialisieren Sie zunächst Felder für Suchbedingungen, Listen, Erstellung, Änderung, Anzeige und Sortierung
foreach($this->fields as $field){
if(!$field->isAbandon){
$ field->process();
}
}
//Operation festlegen
if($this->operationInsert){
$this->operation- > ;insert(new SCrudOperationTable($this,SCrudOperation::METHOD_INSERT));
$this->operation->insert(new SCrudOperation($this,SCrudOperation::METHOD_DOINSERT));
}
if($this->operationMultiDelete){
$this->operation->insert(new SCrudOperationMulti($this,SCrudOperation::METHOD_DELETEMULTI));
}
if($this- > ;operationDelete){
$this->operation->insert(new SCrudOperationRow($this,SCrudOperation::METHOD_DELETE));
}
if($this->operationUpdate){
$this->operation->insert(new SCrudOperationRow($this,SCrudOperation::METHOD_UPDATE));
$this->operation->insert(new SCrudOperation($this,SCrudOperation::METHOD_DOUPDATE ) );
}
if($this->operationView){
$this->operation->insert(new SCrudOperationRow($this,SCrudOperation::METHOD_VIEW));
}
//Übertragung zur Operationsklassenverarbeitung
$this->operation->process ( $req );
}
/**
* CRUD-Fragment anzeigen
* @param unbekannter $tpl-Vorlagenname
* @param unbekannter $params
*/
public function display($tpl, $params = array()) {
display ( self::PATH_VIEW . DIRECTORY_SEPARATOR . $tpl, array_merge ( $params, array (
'url_view' => $ this- >url ( SCrudOperation::METHOD_VIEW ),
'url_index' => $this->url ( SCrudOperation::METHOD_INDEX ),
'url_search' => SCrudOperation::METHOD_SEARCH),
'url_insert' => $this->url ( SCrudOperation::METHOD_INSERT),
'url_update' => $this->url( SCrudOperation::METHOD_UPDATE),
'url_doupdate' => $this->url ( SCrudOperation::METHOD_DOUPDATE ),
'url_doinsert' => $this->url ( SCrudOperation::METHOD_DOINSERT ),
'url_delete' => ;$this->url ( SCrudOperation::METHOD_DELETE ),
'url_delete_multi'=>$this->url(SCrudOperation::METHOD_DELETEMULTI)
) ) );
}
}
/**
* Die Basisklasse aller CRUD-Unterklassen, implementiert eine Methode zum Aufzeichnen des Haupt-CRUD-Objekts
*
* @author bluehire
*
*/
abstract class SCrudSub {
// Haupt-CRUD-Objekt
protected $crud;
Das Obige ist der Kurzbeitrag Im IcePHP-Framework Taichungs allgemeines CRUD-Funktionsframework (5) Inhalt der SCrud-Master-Kontrollklasse. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com)!