/**
* Master class CRUD
* @auteur bluehire
*/
class SCrud {
const PATH_VIEW='crud'; //Afficher le nom du chemin
/**
* Configuration actuelle des opérations de liste
* @var SCrudOperation
*/
public $opération;
/**
* Objet d'accès aux données
* @var STable
*/
public $model;
private $table; // Nom de la table principale
private $config //Configuration de la table; array
public $fields; //tableau de tous les objets de champ
public $title; //titre professionnel actuel de l'ensemble du CRUD
public $pageSize=20 //taille de pagination de la listepublic $pageSort='id'; //Base de tri de la liste
public $pageDir='desc'; //Direction du tri de la liste
public $rowNo=true; //Si la liste affiche les numéros de ligne
/**
* Filtrage dans les listes
* @var Closure
*/
public $gridFilter;
//S'il existe les opérations suivantes
public $operationView=true
public $operationInsert=true;
public $ operationUpdate=true;
public $operationDelete=true;
public $operationMultiDelete=true;
//Le contrôleur et le nom de l'action de la requête en cours, utilisés pour l'épissage ultérieur des hyperliens
contrôleur $ privé;
action $privée;
/**
*
* @param inconnu $nom de la table principale de la table
* @param inconnu $nom du contrôleur du contrôleur
* @param inconnu $nom de l'action d'action
*/
fonction publique __construct($table, $contrôleur, $action) {
$this ->table = $table;
$this->controller = $controller;
$this->action = $action;
// Générer divers objets de configuration
$ this-> config = config ( 'crud/' . $table );
foreach ( $this->config as $c => $v ) {
if (strpos ( $c, '_ ' ) == = 0) {
$n = substr ( $c, 1 );
$this->$n = $v;
} else {
$this-> field [$c ] = new SCrudField ( $this, $v );
}
}
//Titre de cette fonction
$this->title=$this-> ;title?: $table.'Management';
//Tous les ensembles d'opérations
$this->operation = new SCrudOperationSet ( $this );
//Modèle d'accès aux données
$ this->model = table($table);
}
/**
* Prendre un champ
*
* @param inconnu $name
* @return SCrudField
*/
champ de fonction public($name) {
if ( ! isset ( $ this->fields [$name] )) {
return null;
>
return $this->fields [$name];
}
/**
* Obtenez le nom du champ de clé primaire de cette table
* @return SCrudField
*/
public function getPrimaryField() {
// Afficher tous les champs
foreach ( $this->fields as $field ) {
// La clé primaire le champ doit être interrogé
if ($field->primaryKey) {
return $field;
}
}
return false;
}
/**
* Obtenez tous les champs pouvant être triés par
* @return array of SCrudField
*/
public function listSortable(){
return array_filter ( $this->fields, function ($f) {
return $f->isSortable ();
} );
}
/**
* Obtenez tous les champs consultables
* @return multitype :
*/
public function listSearchable(){
return array_filter ( $this->fields, function ($f ) {
return $ f->isSearchable ();
} );
}
/**
* Récupérez les champs de toutes les listes participantes
* @return multitype :
*/
public function listGridable(){
return array_filter ( $this- >fields, function ($f) {
return $f->isGridable ();
} );
}
/**
* Obtenez tous les champs participant à la visualisation
* @return multitype :
*/
public function listViewable(){
return array_filter ( $this->fields, function ($f) {
return $f->isViewable ();
} ) ;
}
/**
* Obtenez tous les champs impliqués dans la création
* @return multitype :
*/
public function listInsertable(){
return array_filter ( $this->fields, function ($f) {
return $f->isInsertable ();
} );
}
/**
* Obtenez tous les champs participant à l'édition
* @return multitype :
*/
public function listUpdatable(){
return array_filter ( $ this->champs, fonction ($f) {
return $f->isUpdatable ();
} );
}
/**
* Obtenez tous les champs d'heure de création, généralement un seul
* @return multitype :
*/
public function listCreated() {
return array_filter ( $this->fields, function ($field) {
return $field->isCreated;
} );
}
/**
* Obtenez tous les champs d'heure de modification, généralement un seul
* @return multitype :
*/
public function listUpdated(){
return array_filter ( $this->fields, function ($field) {
return $field->isUpdated ;
} );
}
/**
* Construire l'URL
*
* @param inconnu $method
* Le troisième paramètre système (le nom est fixé à m)
* @param inconnu $params
* Autres paramètres
* @chaîne de retour
*/
url de fonction publique($method, $params = array()) {
return STemplate :: append ( LUrl::ice ( ) . '/', array_merge ( $params, array (
'c' => $this->contrôleur,
'a' => $this->action,
'm' => $method
) );
>
/**
* Ajouter une opération commune de multi-sélection
*
* @return SCrudOperationMulti
*/
public function operationMulti($method) {
return $this->operation->add ( new SCrudOperationMulti ( $this, $method ) );
}
/**
* Ajouter une opération commune à une seule ligne
*
* @return SCrudOperationRow
*/
public function operationRow($method) {
return $this->operation->add ( new SCrudOperationRow ( $ this, $method ) );
}
/**
* Ajouter une opération de table complète commune
*
* @return SCrudOperationTable
*/
public function operationTable($method) {
return $this->operation->add ( new SCrudOperationTable ( $this, $method ) );
}
/**
* Traitement des requêtes, implémentées par les classes d'opérations
*
* @param SRequest $req
*/
public function process(SRequest $req) {
//Avant le traitement, Initialisez d'abord les champs pour les conditions de recherche, les listes, la création, la modification, l'affichage et le tri
foreach($this->fields as $field){
if(!$field->isAbandon){
$ field->process();
}
}
//Définir l'opération
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)); 🎜 >$this->opération->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));
}
//Transfert vers le traitement de la classe d'opération
$this->operation->process ( $req );
}
/**
* Afficher le fragment CRUD
* @param inconnu $tpl nom du modèle
* @param inconnu $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_DOINSERT ),
'url_doinsert' => => ;$this->url ( SCrudOperation::METHOD_DELETE ),
'url_delete_multi'=>$this->url(SCrudOperation::METHOD_DELETEMULTI)
) ) );
}
}
/**
* La classe de base de toutes les sous-classes CRUD, implémente une méthode pour enregistrer l'objet CRUD principal
*
* @author bluehire
*
*/
abstract class SCrudSub {
// Objet CRUD principal
protected $crud;
Ce qui précède est le message rapide dans le cadre IcePHP Cadre fonctionnel général CRUD de Taichung (5) Contenu de la classe de contrôle maître SCrud, pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (m.sbmmt.com) !