Sei sulla pagina 1di 54

26/5/2018 Eventi server e script client

Eventi server e script client


È possibile implementare la propria logica aziendale scrivendo i propri eventi server e script client. Il tuo codice è
memorizzato nel progetto in modo da poter migrare facilmente il tuo progetto ad altri modelli o versioni future. Questa
funzione riduce la necessità della personalizzazione dei modelli e crea la massima possibilità di personalizzare e creare
funzionalità più avanzate per i progetti.

Dopo aver caricato il database, gli oggetti del database (tabelle, viste, viste personalizzate e report) verranno visualizzati
nel riquadro di sinistra (il riquadro del database). Fare clic su qualsiasi tabella per accedere alla pagina di configurazione
campo e quindi selezionare la scheda Codice (che contiene Eventi server , Script client e Modelli personalizzati ).

Nota: per semplicità, utilizziamo la "tabella" nella seguente descrizione per fare riferimento a qualsiasi oggetto del
database nel progetto. Un oggetto di database può essere una tabella, una vista, una vista personalizzata o un report.

La treeview mostra gli eventi server e gli script client che è possibile aggiungere al progetto:

Eventi del server Procedure PHP lato server

Globale Gli eventi sono applicabili a tutte le pagine PHP

Tabella specifiche L'insieme di eventi è specifico della tabella, gli eventi sono applicabili solo alla tabella selezionata

Altro Gli eventi sono applicabili solo ad alcune pagine comuni nel progetto

Script del cliente JavaScript sul lato client

Globale Il JavaScript è incluso in tutte le pagine con intestazione e piè di pagina

Tabella specifiche I JavaScript sono specifici della tabella, sono inclusi nelle pagine solo per la tabella selezionata

Altro I JavaScript sono inclusi solo in alcune pagine comuni nel progetto

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 1/54
26/5/2018 Eventi server e script client

Per aggiungere i tuoi script personalizzati agli eventi del server o agli script client, seleziona un elemento nella vista ad
albero, quindi inserisci il tuo codice nell'editor.

L'editor supporta Trova e sostituisci. Premi Ctrl-F per aprire la finestra di dialogo Trova e premi Ctrl-H per aprire la
finestra di dialogo Sostituisci.

È possibile fare clic sul pulsante [Cancella] per scartare il codice esistente e reimpostare il codice del modello per
l'evento server o lo script client.

Repository di codice
PHPMaker fornisce un repository di codice per riutilizzare facilmente il codice tra i progetti e condividerli con altri utenti.
Fare clic sul pulsante [Codice repository] per aprirlo, verrà visualizzato il codice riutilizzabile categorizzato:

È possibile aggiungere il codice all'editor facendo clic sul pulsante [Aggiungi a Editor] . Il codice riutilizzabile viene
archiviato in file XML che risiedono nel nome "codice" della sottocartella s nella cartella di installazione. Il formato dei file
XML è semplice, ci sono 3 parti:

1. descrizione : descrizione del codice riutilizzabile


2. codice - codice da inserire nell'editor
3. globalcode - codice comune da inserire nel Global Code (vedi sotto), questo codice verrà inserito una sola volta
nel progetto. Ad esempio, se il tuo codice viene utilizzato più volte nel tuo progetto e il tuo codice chiama una
funzione di supporto, non è necessario includere la funzione di supporto più volte. In questo caso metti la tua
funzione di supporto nella sezione globalcode , quindi la funzione verrà inclusa solo una volta.

Ci sono alcuni file di esempio nella cartella "codice", è possibile copiare e modificare per il proprio codice e quindi salvarli
nella cartella "codice" per riutilizzarli.

Eventi del server


In generale, gli eventi del server vengono attivati nel seguente ordine: (non tutte le pagine sono uguali)

Codice globale (globale)


Language_Load (metodo della classe Language)
Database_Connecting / Connected (funzione Global)
User_CustomValidate (metodo della classe di sicurezza)
UserLevel_Loaded (metodo della classe di sicurezza)
User_Validated (metodo di classe di sicurezza)
TablePermission_Loading / Loaded (metodo della classe di sicurezza)
TablePermission_Loaded (metodo della classe di sicurezza)
UserID_Loading / Loaded (metodo della classe di sicurezza)
Page_Loading (funzione globale)
Page_Load (metodo di classe Page)

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 2/54
26/5/2018 Eventi server e script client

Page_Rendering (funzione globale)


Page_Render (metodo di classe Page)
Page_Head (Globale)
MenuItem_Adding (funzione globale)
Menu_Rendering / Rendered (funzione globale)
Page_DataRendering (metodo di classe Page)
Recordset * / Grid * / Row * (metodo di classe Page)
Page_DataRendered (metodo di classe Page)
Page_Foot (globale)
Page_Terminate (metodo di classe Page)
Page_Unload (metodo di classe Page)
Page_Unloaded (funzione globale)
Page_Redirecting (metodo di classe Page)

Gli appunti
1. Dalla v9, la classe della pagina eredita dalla classe della tabella, quindi puoi usare $ this nei metodi della
classe page per accedere ai membri della classe della tabella. Per la compatibilità con le versioni precedenti,
l'oggetto table viene mantenuto ed è un alias dell'oggetto page, quindi è possibile utilizzare $ this nei
metodi della classe table per accedere ai membri della classe page.
2. Il Page_Unload e Page_Unloaded sono eventi lato server che devono essere attivati ogni volta che si
accede alla pagina e prima che l'HTML venga emesso sul browser sul lato client. NON sono eventi da
licenziare prima di lasciare la pagina e ricaricare la pagina o andare su un'altra pagina. Ad esempio, se si
invia un modulo nella pagina, di solito si invia alla pagina stessa, si sta effettivamente ricaricando la pagina,
tutti gli eventi del server verranno nuovamente attivati. Per un altro esempio, se si fa clic su un collegamento
ipertestuale che collega a un'altra pagina, la pagina sul lato server non viene nemmeno più acceduta e non
viene attivato alcun evento server per la pagina.
3. Se un evento del server è una funzione globale, non c'è $ nel contesto della funzione. Se si desidera fare
riferimento all'oggetto di pagina corrente, è possibile utilizzare la funzione globale CurrentPage () .
4. Nella seguente tabella, il <fieldname> nel codice, ad esempio in $ this -> <fieldname> ->
<property> o x_ <fieldname> , rappresenta il nome della variabile di campo. In generale, se il nome del
campo è alfanumerico, il nome della variabile di campo è uguale al nome del campo. Altrimenti, gli spazi
vengono sostituiti da caratteri di sottolineatura e altri caratteri non alfanumerici vengono sostituiti dalla loro
rappresentazione in forma esadecimale del loro valore unicode. Se la variabile è una parola riservata o inizia
con una cifra, verrà anteposta con un carattere di sottolineatura. Tuttavia, si noti che se il nome del campo è
quotato, ad es. Come chiave in $ rs ['<nomecampo>'] , <nomecampo> è il nome del campo effettivo
come nel database, non il nome della variabile di campo.
5. Gli eventi server sono funzioni o metodi di classe, se è necessario utilizzare variabili globali negli eventi, si
noti l' ambito della variabile (http://php.net/manual/en/language.variables.scope.php) PHP , è necessario
utilizzare la parola chiave globale o $ GLOBALS .

Gli eventi server disponibili sono:

Globale -> Tutte le pagine

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 3/54
26/5/2018 Eventi server e script client

Page_Head Il codice inserito in questo evento verrà inserito nell'header.php prima di chiudere la
sezione <head>. Puoi usare questo evento per aggiungere il tuo codice nella sezione
principale. Nota: questa è una funzione globale.

Ad esempio, PHPMaker NON supporta l'interfaccia utente jQuery, i plugin AdminLTE o


altri plugin jQuery, ma puoi includerli tu stesso. Quindi puoi usare i widget usando lo
script di avvio (vedi sotto).

Esempio 1

Includi l'interfaccia utente jQuery da PHP (utilizzando CDN):

ew_AddStylesheet ( "//
code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css"); //
Aggiungi foglio di stile CSS
ew_AddClientScript ("// code.jquery.com/ui/1.10.3/jquery-ui.js");
// Aggiungi JavaScript

Esempio 2

In alternativa, puoi includere in HTML:

<link rel = "stylesheet" href = "//


code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
<script src = "// code.jquery.com/ui/ 1.10.3 / jquery-ui.js "> </
script>

Esempio 3

Puoi anche usare sia PHP che HTML, ma in questo caso DEVI usare <? Php ...?> , Ad
es

<? php ew_AddStylesheet ( "//


code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css"); ?>
<script src = "// code.jquery.com/ui/1.10.3/jquery-ui.js"> </
script>

Page_Foot Il codice inserito in questo evento verrà inserito in footer.php dopo la sezione <footer>.
Puoi utilizzare questo evento per aggiungere il tuo codice per il sito web. Nota: questa
è una funzione globale.

Esempio 1

Aggiungi un Siderbar di controllo (https://adminlte.io/docs/2.4/control-sidebar) (colore


chiaro)

<! - The Right Sidebar ->


<aside class = "control-sidebar control-sidebar-light">
<! - Il contenuto della barra laterale va qui ->
</ aside>
<! - Lo sfondo della barra laterale - ->
<! - Questo div deve essere posizionato subito dopo la barra
laterale affinché funzioni ->
<div class = "control-sidebar-bg"> </ div>

Una volta creata la barra laterale, sarà necessario un pulsante di attivazione /


disattivazione per aprirlo / chiuderlo. Aggiungendo l'attributo data-toggle =
"control-sidebar" a qualsiasi pulsante, esso agirà automaticamente come pulsante
di attivazione / disattivazione.

Esempio 2

Aggiungi un pulsante di attivazione / disattivazione per la barra laterale di controllo dal


modello JsRender:

<script type = "text / html" class = "ewJsTemplate" data-name =


"myControlSidebar" data-method = "appendTo" data-target = ".
navbar-custom-menu .nav" data-seq = "10">

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 4/54
26/5/2018 Eventi server e script client

<li> <a href="#" data-toggle="control-sidebar"> <i class = "fa fa-


gears"> </ i> </a> </ li>
</ script>

Lo script generato può applicare automaticamente i modelli JsRender se il modello è nel


formato di <script type = "text / html" class = "ewJsTemplate"> ... </
script> . Usando questi modelli puoi cambiare praticamente ovunque dell'intero layout.
Nota: il nome della classe CSS "ewJsTemplate" è obbligatorio e fa distinzione
tra maiuscole e minuscole.

Sono supportati i seguenti attributi data- *:

-Name dati (Facoltativo) Nome del modello.

Nota Se più modelli hanno lo stesso nome, verrà utilizzato solo


il primo modello.

data-obiettivo (Obbligatorio) Il target (selettore CSS) del modello. Da utilizzare con


il metodo dati (vedere di seguito).

Gli appunti
1. Questo deve essere un selettore CSS valido, altrimenti il
target non può essere trovato e il template non può
essere reso.
2. Premi F12 nel browser, controlla gli elementi HTML,
controlla gli attributi id e class per trovare il selettore CSS
corretto del tuo target.

-Metodo dati (Facoltativo) Il nome del metodo jQuery per applicare il modello. In
generale, il modello sarà reso da:

$ (<Html>) [Metodo] (target);

Sono supportati i seguenti metodi jQuery:

Nome Metodo Descrizione

appendTo . appendTo () Inserisci


(http://api.jquery.com/appendTo/) HTML alla
fine del
target

prependTo .prependTo () Inserisci


(http://api.jquery.com/prependTo/) HTML
all'inizio del
target

InsertAfter .insertAfter () Inserisci


(http://api.jquery.com/insertAfter/) HTML dopo il
target

insertBefore .insertBefore () Inserisci


(http://api.jquery.com/insertBefore/) HTML prima
della
destinazione

sostituisci .sostituisci tutto() Sostituisci


tutto (http://api.jquery.com/replaceAll/) target con
HTML

Se il metodo non è specificato, il modello sarà reso da:

$ (Target) .html (<html>);

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 5/54
26/5/2018 Eventi server e script client

dati-dati (Facoltativo) Dati da passare al modello. Deve essere un nome di


proprietà dell'oggetto ewVar o dell'oggetto finestra . Se si
desidera passare dati al modello, assicurarsi di impostare prima i
dati.

Ad esempio, i dati del menu sono impostati su ewVar.menu e quindi


data-data = "menu" è impostato per il modello di menu. Puoi
sovrascrivere il modello di menu predefinito aggiungendo il tuo con lo
stesso nome (ad esempio nome-dati = "menu" ) nell'evento
Page_Foot . Analogamente per il selettore multilingue ( nome-dati
= "lingue" ) e il pannello a discesa utente connesso ( data-name
= "login" ).

Dati-ss (Facoltativo) Il numero di sequenza del modello da applicare. Se non


specificato, è 0. Maggiore è il numero, più tardi verrà applicato il
modello. Se esistono più modelli per lo stesso target, potrebbe essere
necessario utilizzare questo attributo per determinare quale modello
si applica per primo.

Nota Un modello vuoto può essere trovato nel repository di codici.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 6/54
26/5/2018 Eventi server e script client

Database_Connecting Questo evento verrà chiamato da tutte le pagine PHP prima di connettersi al database.
Nota : questa è una funzione globale.

Se generale, l'argomento è un array con le seguenti chiavi: host, porta, utente, pass,
db . Se Access / MSSQL, la chiave è connectiontring . È possibile utilizzare questo
evento per modificare la stringa di connessione (ad esempio, modificare le informazioni
di connessione con il server o persino connettersi ad altri database).

Esempio 1

//
Funzione
MySQL / PostgreSQL Database_Connecting (& $ info) { // var_dump
($ info);
// presume che gli script siano generati con le informazioni di
connessione per il PC locale
se (ew_CurrentUserIP () <> "127.0.0.1") { // non si connette al
PC locale
// si connette al database di produzione
$ info ["host"] = " localhost ";
$ info ["user"] = "xxx";
$ info ["pass"] = "yyy";
$ info ["db"] = "production_db";
}
}

Esempio 2

È possibile utilizzare il login singolo e i Livelli utente dinamici comuni per più progetti, a
condizione che TUTTI i progetti utilizzino lo stesso nome di progetto e le stesse tabelle di
sicurezza avanzate (ad es. Tabella utente, Tabella dei livelli utente e Tabella
autorizzazioni autorizzazione utente). Se tutti i progetti utilizzano lo stesso database e le
stesse tabelle di sicurezza avanzate, quest'ultima condizione viene soddisfatta
automaticamente. Tuttavia, se i progetti utilizzano database diversi, è possibile utilizzare
questo evento per modificare le informazioni di connessione in modo che l'utente possa
ottenere correttamente i Livelli utente dinamici dalle comuni tabelle di sicurezza
avanzate durante il login, ad es.

//
Funzione
MySQL / PostgreSQL Database_Connecting (& $ info) { // var_dump
($ info);
if (preg_match ('/ login | userpriv /', CurrentPageID ()) { //
login.php o userpriv.php
// si connettono al database comune con le comuni tabelle
Advanced Security
$ info ["host"] = "localhost" ;
$ info ["user"] = "xxx";
$ info ["pass"] = "yyy";
$ info ["db"] = "common_db";
}
}

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 7/54
26/5/2018 Eventi server e script client

Database_Connected Questo evento verrà attivato da tutte le pagine PHP dopo la connessione al database.
Nota : questa è una funzione globale.

L'argomento è l'oggetto di connessione, è possibile utilizzarlo per eseguire le proprie


dichiarazioni.

Esempio

Chiamare una procedura memorizzata dopo la connessione.

function Database_Connected (& $ conn) {


$ conn-> Execute ("CALL MyStoredProcedure");
}

Language_Load Questo evento verrà generato quando viene caricato il file della lingua. Puoi usarlo per
cambiare le frasi della lingua se necessario. Nota : questo evento è un membro della
classe di lingua.

Esempio 1

function Language_Load () {
$ this-> setPhrase ("MyID", "MyValue"); // Fai riferimento al
file di lingua per la frase effettiva id
$ this-> setPhraseClass ("MyID", "glyphicon glyphicon-xxx
ewIcon"); // Fai riferimento a
http://getbootstrap.com/components/#glyphicons per il nome
dell'icona
}

Esempio 2

Cambia il codice HTML del selettore di lingua.

function Language_Load () {
$ this-> Type = "DROPDOWN"; // Imposta il tipo, i tipi
supportati sono: LI / DROPDOWN (per l'uso con la barra di
navigazione superiore) o SELECT / RADIO (NON per l'uso con la barra
di navigazione superiore) // $ this-> Template = "<My JsRender
template>"; // O usa il modello JsRender personalizzato }

Page_Loading Questo evento verrà chiamato da tutte le pagine PHP all'inizio della pagina. Se le pagine
coinvolgono la connessione al database, verranno chiamate dopo la connessione al
database e prima dell'evento Page_Load . Nota: questa è una funzione globale,
NON membro della classe di pagina.

Page_Rendering Questo evento verrà chiamato da tutte le pagine PHP prima dell'esecuzione dell'HTML per
la pagina. Nota: questa è una funzione globale, NON membro della classe di
pagina.

Page_Unloaded Questo evento verrà chiamato da tutte le pagine PHP alla fine della pagina. Se le pagine
coinvolgono la connessione al database, verranno chiamate prima della chiusura della
connessione al database e dopo l' evento Page_Unload . Nota: questa è una
funzione globale, NON membro della classe di pagina.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 8/54
26/5/2018 Eventi server e script client

Codice globale Codice da includere in tutte le pagine PHP. Questo può contenere costanti, variabili,
funzioni e classi.

Esempio 1

Usa un'altra classe per l'esportazione in Excel (non PHPExcel)

classe cMyExportExcel estende cExportExcel {

// Esegui l'override della


funzione ExportTableheader () ExportTableHeader () {
$ this-> Text. = "<Div>". $ this-> Table-> TableCaption ().
"</ div>"; // Aggiungi tabella caption
parent :: ExportTableHeader (); // Chiama il metodo
genitore
}

$ EW_EXPORT ['excel'] = 'cMyExportExcel'; // Sostituisci la classe


cExportExcel predefinita con la tua classe

Esempio 2

Includi AWS SDK per PHP (https://aws.amazon.com/sdk-for-php/) e registra Amazon S3


Stream Wrapper (https://docs.aws.amazon.com/aws-sdk-php/v3/guide/service/s3-
stream-wrapper.html)

include "aws-autoloader.php"; // Supponi di aver scaricato l'SDK e


di mettere i file e aws-autoloader.php nella cartella di
destinazione del progetto
putenv ("AWS_ACCESS_KEY_ID = xxx"); // Cambia al proprio ID della
chiave di accesso
putenv ("AWS_SECRET_ACCESS_KEY = xxx"); //
Passa alla tua chiave di accesso segreta $ s3client = new Aws \ S3
\ S3Client ([
"version" => "latest",
"region" => "us-east-2" // Cambia nella tua regione // , "http"
=> ["verify" => FALSE] // Disabilita la verifica del certificato
(questo non è sicuro!)

]);
$ s3client-> registerStreamWrapper ();

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 9/54
26/5/2018 Eventi server e script client

User_CustomValidate Per uso con sicurezza. (Vedi Impostazioni di sicurezza (securitysetup.htm) ) Questo
evento viene attivato prima della convalida utente predefinita. È possibile utilizzare
questo evento per convalidare l'utente. Gli argomenti sono il nome utente e la password
che l'utente ha inserito. Ritorna TRUE se il nome utente e la password superano la tua
convalida personalizzata. Nota: questo evento è un membro della classe di
sicurezza.

Gli appunti
1. Se si utilizza l'autenticazione "Windows" o "LDAP" (vedere Impostazioni
avanzate (tools.htm#custom) ), la restituzione di TRUE o FALSE in questo
evento non ha importanza. L'utente verrà convalidato da Windows o LDAP in
seguito.
2. Se si utilizza l'autenticazione "LDAP" (consultare Impostazioni avanzate
(tools.htm#custom) ), è possibile utilizzare questo evento per modificare il
nome utente e la password, se necessario, per la successiva convalida con il
server LDAP.
3. La convalida predefinita continuerà dopo che questo evento è stato attivato.
Se si restituisce TRUE, l'utente passerà sempre la convalida predefinita e
otterrà l'ID utente e il Livello utente, se presenti. Se si restituisce FALSE, la
convalida predefinita procede normalmente. Se si utilizza la sicurezza
avanzata, è ancora necessario la tabella utente per memorizzare le
informazioni dell'utente come ID utente e Livello utente, sebbene il
valore del campo password possa essere vuoto o qualsiasi valore se
si restituisce VERO.

Esempio

Rimuovere il nome del dominio in modo che corrisponda al nome utente nella tabella
utente (per ID utente / Livello sicurezza, se abilitato) dopo l'autenticazione di Windows,
se la tabella utente memorizza il nome utente senza nome dominio.

function User_CustomValidate (& $ usr, & $ pwd) { if


(IsAuthenticated ()) { // Autenticazione di Windows $ ar = explode
("\\", $ usr); if (count ($ ar)> 1) $ usr = $ ar [1]; //
Restituisce solo il nome utente } }

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 10/54
26/5/2018 Eventi server e script client

Ldap_Validated Da utilizzare solo con l'autenticazione "LDAP" (vedere Impostazioni avanzate


(tools.htm#custom) ). Questo evento viene generato dopo User_CustomValidate
(vedi sopra). Quando viene attivato questo evento, il bind dell'utente viene già eseguito
correttamente, ma è possibile utilizzare questo evento per eseguire ulteriori convalide o
ottenere ulteriori informazioni dell'utente dal server LDAP. Restituisce TRUE se l'utente la
tua convalida personalizzata. Nota: questo evento è un membro della classe Ldap.

Esempio

Controlla i gruppi di utenti di Active Directory.

function Ldap_Validated (& $ usr, & $ pwd) {


// Fai qualcosa (se esiste) dopo aver vincolato un utente con
successo, ad esempio, usa il metodo
Search ( ) che restituisce le voci direttamente // Gli
argomenti sono $ base_dn, $ filter e $ attributi, vedere
ldap_search (http://php.net/manual/en/function.ldap-search.php) ,
valori effettivi dipendenti dal server LDAP.
$ entries = $ this-> Cerca ("OU = Dipartimenti, DC = college,
DC = scuola, DC = edu", // Base DN per la directory "
(sAMAccountName =". $ this-> Utente. ")", // Filtro di ricerca
["memberof"]); // Attributi foreach ($ entries [0] ["memberof"] as
$ grp) { // Controlla i gruppi if (in_array ($ grp, ["group1",
"group2" ])) return TRUE; } return FALSE;

// Restituisce TRUE / FALSE per convalidare l'utente


}

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 11/54
26/5/2018 Eventi server e script client

User_Validated Per uso con sicurezza. (Vedi Impostazioni di sicurezza (securitysetup.htm) ) Questo
evento viene generato dopo aver convalidato l'utente con la tabella utente. Nota:
questo evento è un membro della classe di sicurezza.

Gli appunti
1. Questo evento non viene attivato per l'amministratore codificato (che non è
un utente nella tabella utente).
2. Se l'utente viene trovato nella tabella utente, l'argomento $ rs è un array, è
possibile ottenere un valore di campo di $ rs ['<nomecampo>'] . Se
l'utente non viene trovato, $ rs è NULL . Per impostazione predefinita, la
maggior parte delle informazioni utente sono già caricate nell'oggetto profilo
utente globale, Profile () , ma le informazioni non includono il campo
password, campi BLOB e campi memo, è possibile utilizzare questo evento
per ottenere maggiori informazioni dalla tabella utente.
3. È possibile utilizzare questo evento per sovrascrivere il nome utente, l'ID
utente, l'ID utente principale e il Livello utente (se ID utente / Livello di
sicurezza è abilitato) per l'utente convalidato dal metodo LoginUser ()
della classe di sicurezza. Gli argomenti del metodo sono:
function LoginUser ($ userName = NULL, $ userID = NULL, $
parentUserID = NULL, $ userLevel = NULL)
Se qualsiasi argomento è NULL, la proprietà corrispondente non sarà
interessata.

Esempio 1

Aggiungi ulteriori informazioni sull'utente corrente all'oggetto profilo utente globale

funzione User_Validated (& $ rs) {


Profile () -> Set ("Notes", $ rs ["Notes"]); // Imposta
ulteriori dati sull'oggetto profilo
Profile () -> Save (); // Salva in sessione
}

Puoi scaricarlo in un secondo momento da Profile () -> Get ("Paese") .

Esempio 2

Verifica se una password utente è scaduta dal codice personalizzato con Abilita
scadenza password (vedi Impostazioni di sicurezza (securitysetup.htm) ) abilitato

function User_Validated (& $ rs) {


if ($ rs ["PasswordExpired"] == "Y") { // Supponiamo che la
tabella utente abbia un campo denominato "PasswordExpired" che
archivia se la password è scaduta.
Profile () -> SetPasswordExpired ( $ rs [ "username"]); //
Supponiamo che il campo del nome utente sia denominato "Username"
return FALSE; // Restituisce FALSE per invalidare l'utente
}
}

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 12/54
26/5/2018 Eventi server e script client

UserLevel_Loaded Da utilizzare con la sicurezza a livello utente. (Vedi Impostazioni di sicurezza


(securitysetup.htm) ) Questo evento viene attivato dopo il login utente riuscito e dopo
che le impostazioni del Livello utente sono state caricate. È possibile eseguire azioni quali
la modifica o l'aggiunta di autorizzazioni a livello utente. Nota: questo evento è un
membro della classe di sicurezza.

Esempio 1

Modificare le autorizzazioni di un livello utente per una tabella

// Nota: questo evento è un membro della classe Security, quindi è


possibile fare riferimento agli altri membri della classe Security
direttamente
funzione UserLevel_Loaded () {
$ this-> DeleteUserPermission ("Vendite", "ordini",
EW_ALLOW_ADD); // I primi 2 argomenti possono anche essere array
$ this-> AddUserPermission ("Vendite", "ordini",
EW_ALLOW_EDIT); // I primi 2 argomenti possono anche essere array
}

Esempio 2

Concedere tutte le autorizzazioni a un livello utente per una tabella

// Nota: questo evento è un membro della classe Security, quindi è


possibile fare riferimento agli altri membri della classe Security
direttamente
funzione UserLevel_Loaded () {
$ this-> AddUserPermission ("Manager", "dipendenti",
EW_ALLOW_ALL); // I primi 2 argomenti possono anche essere array
}

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 13/54
26/5/2018 Eventi server e script client

MenuItem_Adding Questo evento viene attivato per voci di menu personalizzate prima che venga aggiunto
al menu. Le informazioni sulla voce di menu vengono passate all'evento come un'istanza
dell'oggetto cMenuItem (vedi sotto). Restituisci FALSE se non vuoi mostrare la voce del
menu. Se si restituisce TRUE, la voce di menu verrà aggiunta al menu, ma ciò non
significa che sarà sempre visualizzata. Una voce di menu verrà visualizzata solo se la sua
proprietà Allowed è VERO. Quando la voce di menu viene passata a questo evento, la
proprietà Allowed viene impostata in base alla sicurezza del livello utente del progetto,
tuttavia è possibile modificarla impostando $ Item-> Allowed come TRUE o FALSE in
base alle esigenze. Nota: questa è una funzione globale.

Esempio 1

Mostra solo una voce di menu dopo che l'utente ha effettuato l'accesso

function MenuItem_Adding (& $ Item) {


// var_dump ($ Item);
// Restituisce False se la voce di menu non è consentita se
($ Item-> Text == "Download") restituisce Security () ->
IsLoggedIn (); return TRUE; }

Esempio 2

Imposta le proprietà delle voci di menu

function MenuItem_Adding (& $ Item) {


// var_dump ($ Item);
if ($ Item-> Text == "Download")
$ Item-> Icon = "glyphicon-download"; // L'icona può essere
glyphicon- * o fa- *
if ($ Item-> Text == "Something")
$ Item-> Label = "<small class = \" label pull-right bg-
green \ "> new < / small> "; // L'etichetta mostra sul lato destro
della voce del menu (solo per il menu verticale)
restituisce TRUE;
}

Nota Se il tuo progetto è multi-lingua, $ Item-> Text sarà diverso per ogni
lingua, puoi invece selezionare $ Item-> Name o $ Item-> Url . Controlla
l'ewmenu.php generato per vedere i nomi degli oggetti o gli URL.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 14/54
26/5/2018 Eventi server e script client

Menu_Rendering Questo evento viene attivato prima del rendering del menu. Puoi manipolare le voci di
menu in questo evento. L'argomento è l'oggetto menu. (Vedere l' oggetto Menu di
seguito.) Nota: questa è una funzione globale.

Esempio 1

Aggiungi una voce di menu aggiuntiva al menu solo per gli utenti registrati.

funzione Menu_Rendering (& $ Menu) {


if ($ Menu-> IsRoot) { // Menu di root
$ Menu-> AddMenuItem (10000, "MyName", "MyMenuText",
"MyPage.php", -1, "", IsLoggedIn ());
$ Menu-> MoveItem ("Logout", $ Menu-> Count () - 1); //
sposta fino all'ultimo } }

Esempio 2

Rimuovi tutte le voci di menu predefinite e usa le tue voci di menu.

function Menu_Rendering (& $ Menu) {


if ($ Menu-> IsRoot) { // Menu root
$ Menu-> Cancella (); // Cancella tutti gli elementi del
menu
$ Menu-> AddMenuItem (1, "MyName1", "MyMenuText1",
"MyPage1.php");
$ Menu-> AddMenuItem (2, "MyName2", "MyMenuText2",
"MyPage2.php");
}
}

Esempio 3

Cambia le opzioni del menu della barra laterale (menu verticale).

funzione Menu_Rendering (& $ Menu) {


if ($ Menu-> IsRoot) { // Menu di root
$ Menu-> Accordion = FALSE; // Se si desidera comprimere il
menu aperto durante l'espansione di un altro, l'impostazione
predefinita è TRUE
$ Menu-> FollowLink = FALSE; // Se seguire il collegamento
in un elemento invece di espandere il sottomenu, il valore
predefinito è TRUE
}
}

Menu_Rendered Questo evento viene attivato dopo il rendering del menu. Potresti voler ripulire in questo
evento se hai creato qualcosa nell'evento Menu_Rendering . L'argomento è l'oggetto
menu. (Vedere l' oggetto Menu di seguito.) Nota: questa è una funzione globale.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 15/54
26/5/2018 Eventi server e script client

TablePermission_Loading Da utilizzare con la sicurezza a livello utente. (Vedi Impostazioni di sicurezza


(securitysetup.htm) ) Questo evento viene attivato prima che venga caricata
l'autorizzazione dell'utente per la tabella della pagina corrente. È possibile eseguire
azioni come modificare o aggiungere ulteriori autorizzazioni a livello utente all'utente
corrente. Nota: questo evento è un membro della classe di sicurezza.

Nota Questo è un evento attivato solo per la tabella corrente. Se cambi le


autorizzazioni delle altre tabelle in questo evento, non ci sarà alcun effetto.
Utilizzare l' evento UserLevel_Loaded se è necessario modificare le autorizzazioni
di altre tabelle.

Esempio

Concedere un altro livello utente all'utente e consentire all'utente di disporre delle


autorizzazioni per più di un livello utente per la tabella corrente.

// Nota: questo evento è un membro della classe Security, quindi è


possibile fare riferimento agli altri membri della classe Security
direttamente alla
funzione TablePermission_Loading () {
if (CurrentUserName () == "nancy")
$ this-> AddUserLevel ("Manager") ;
}

TablePermission_Loaded Da utilizzare con la sicurezza a livello utente. (Vedi Impostazioni di sicurezza


(securitysetup.htm) ) Questo evento viene attivato dopo il caricamento
dell'autorizzazione utente per la tabella della pagina corrente. È possibile modificare
l'autorizzazione utilizzando i metodi setCanXXX della classe Security. Nota: questo
evento è un membro della classe di sicurezza.

Nota Questo è un evento attivato solo per la tabella corrente. Se cambi le


autorizzazioni delle altre tabelle in questo evento, non ci sarà alcun effetto.
Utilizzare l' evento UserLevel_Loaded se è necessario modificare le autorizzazioni
di altre tabelle.

Esempio

Concedere più permessi all'utente e lasciare all'utente più permessi rispetto al suo Livello
utente per la tabella corrente.

// Nota: questo evento è un membro della classe Security, quindi è


possibile fare riferimento agli altri membri della classe Security
direttamente alla
funzione TablePermission_Loaded () {
if (CurrentUserName () == "nancy" && CurrentTable () ->
TableName = "orders" )
$ this-> setCanEdit (TRUE);
}

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 16/54
26/5/2018 Eventi server e script client

UserID_Loading Da utilizzare con la sicurezza dell'ID utente. (Vedi Impostazioni di sicurezza


(securitysetup.htm) ) Questo evento viene attivato dopo il login utente riuscito e prima
di caricare l'ID utente e i relativi ID utente figlio dell'utente corrente. Questi ID utente
determinano i record a cui l'utente corrente può accedere. È possibile eseguire azioni
quali la modifica dell'ID utente dell'utente corrente in modo che l'utente possa accedere
ai record a cui può accedere tramite il suo ID utente originale. Nota: questo evento è
un membro della classe di sicurezza.

Esempio

Modificare l'ID utente dell'utente nell'ID utente del suo utente principale e consentire
all'utente di accedere a più record (accessibili dall'utente padre).

// Nota: questo evento è un membro della classe Security, quindi è


possibile fare riferimento agli altri membri della classe Security
direttamente alla
funzione UserID_Loading () {
if (CurrentParentUserID () <> "")
$ this-> CurrentUserID = CurrentParentUserID ();
}

UserID_Loaded Da utilizzare con la sicurezza dell'ID utente. (Vedi Impostazioni di sicurezza


(securitysetup.htm) ) Questo evento viene attivato dopo aver caricato l'ID utente e i
relativi ID utente figlio dell'utente corrente. Questi ID utente determinano i record a cui
l'utente corrente può accedere. È possibile eseguire azioni quali l'aggiunta o
l'eliminazione degli User ID caricati per l'utente corrente in modo che l'utente possa
accedere a più o meno record a cui può accedere tramite gli ID utente originariamente
caricati. Nota: questo evento è un membro della classe di sicurezza.

Esempio

Aggiungere altri ID utente all'utente e consentire all'utente di accedere a più record

// Nota: questo evento è un membro della classe Security, quindi è


possibile fare riferimento agli altri membri della classe Security
direttamente alla
funzione UserID_Loaded () {
if (CurrentUserName () == "nancy")
$ this-> AddUserName ("janet") ; // Aggiungi ID utente per
nome utente
}

User_PasswordExpired Questo evento verrà chiamato se la password dell'utente è già scaduta. Le informazioni
dell'utente vengono passate all'evento come argomento, puoi ottenere le informazioni
utente da $ rs ["<fieldname>"] dove <fieldname> è un nome di campo della tabella
utente. Nota: questo evento è un membro della classe di sicurezza.

AuditTrail_Inserting Questo evento verrà chiamato prima che venga scritto un record di audit trail. Le
informazioni di audit trail vengono passate all'evento come argomento, è possibile
ottenere le informazioni da $ rsnew ["<fieldname>"] dove <fieldname> è il nome del
campo della traccia di controllo. Restituisci False per annullare l'inserimento. Nota:
questa è una funzione globale.

Specifica tabella -> Comune (Nota: questi eventi sono membri della classe di pagine)

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 17/54
26/5/2018 Eventi server e script client

Recordset_Selecting Questo evento verrà chiamato prima di selezionare i record. L'argomento dell'evento è il
filtro (parte della clausola WHERE dell'SQL) per la selezione dei record, è possibile
personalizzare il filtro per modificare i record da selezionare.

Esempio

Aggiungi il tuo filtro. Si noti che il filtro $ può avere un valore, se si desidera aggiungere
un filtro aggiuntivo, aggiungere il filtro ad esso, non sostituirlo.

function Recordset_Selecting (& $ filter) {


ew_AddFilter ($ filter, "Field1 = 1234"); // Aggiungi la tua
espressione filtro personale
}

Recordset_Selected Questo evento verrà chiamato dopo aver selezionato i record. Nota: l'argomento è
l'oggetto recordset (non array).

Recordset_SearchValidated Questo evento verrà chiamato dopo l' evento Form_CustomValidate e il criterio di
ricerca viene assegnato agli oggetti tabella / campo. È possibile modificare i criteri di
ricerca in questo evento.

Questo evento è un membro della classe del tavolo. Non ci sono argomenti per questo
evento. Per modificare i criteri di ricerca rapida, modificare la proprietà
BasicSearchKeyword e BasicSearchType dell'oggetto tabella. Per modificare i criteri
di ricerca avanzata, modificare la proprietà AdvancedSearch (che è un oggetto della
classe cAdvancedSearch) dell'oggetto campo.

Esempio

function Recordset_SearchValidated () {
$ this-> MyField1-> AdvancedSearch-> SearchValue = "i tuoi
criteri di ricerca"; // Cerca valore
}

Recordset_Searching Questo evento verrà chiamato prima che il criterio di ricerca venga salvato per la
sessione. L'argomento dell'evento è la parte della clausola WHERE creata dai criteri di
ricerca rapida / estesa / avanzata. È possibile modificare la clausola WHERE in questo
evento.

Esempio

Cerca un campo DATE MySQL per una data selezionata o entro 3 giorni dalla data
selezionata.

function Recordset_Searching (& $ filter) {


// die ($ filter); // Rimuovi il commento per visualizzare
prima il filtro
$ filter = preg_replace ('/ `MyDateField` = (\' \ d {4} - \ d
{2} - \ d {2} \ ') /', '` MyDateField`> = $ 1 AND `MyDateField`
<DATE_ADD ($ 1, INTERVAL 3 DAY) ', $ filter); // Sostituisci parte
del filtro con il filtro modificato
}

Row_Delet ing Questo evento verrà chiamato prima di eliminare un record. L'argomento dell'evento è il
record da eliminare come matrice.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 18/54
26/5/2018 Eventi server e script client

Row_Deleted Questo evento verrà chiamato dopo aver cancellato un record. L'argomento dell'evento è
il record cancellato come array.

Esempio

Elimina i record di dettaglio dalla tabella dei dettagli dopo che il record principale è stato
cancellato.

function Row_Deleted (& $ rs) {


// Presuppone ForeignKeyField è di tipo intero
ew_Execute ("DELETE FROM DetailTable WHERE ForeignKeyField =".
$ rs ["PrimaryKeyField"]);
}

Row_Inserting Questo evento verrà chiamato prima di inserire un record. Gli argomenti dell'evento sono
gli array del vecchio (se record di copia) e il nuovo record da inserire. È possibile
modificare i valori in $ rsnew.

Esempio

Assicurati che il valore di un campo sia valido.

function Row_Inserting (& $ rsnew, & $ rsnew) {


if ($ rsnew ["Percentage"]> 100)
$ rsnew ["Percentage"] = 100;
// Per annullare, impostare il valore di ritorno su False
return TRUE;
}

Row_Inserted Questo evento verrà chiamato dopo aver inserito un record. Gli argomenti dell'evento
sono gli array del vecchio (se record di copia) e il nuovo record appena inserito.

Esempio

Ottieni l'ID (campo autoincrement) del record appena inserito

function Row_Inserted (& $ rsold, & $ rsnew) {


$ this-> setSuccessMessage ("Record Inserted. L'ID del nuovo
record è". $ rsnew ["ID"]); }

Row_Rendering Questo evento verrà chiamato prima del rendering (applicando le impostazioni Visualizza
/ Modifica tag) come record.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 19/54
26/5/2018 Eventi server e script client

Row_Rendered Questo evento verrà chiamato dopo il rendering di un record.

Questo è un evento estremamente utile per la formattazione condizionale, puoi fare


molte cose con questo evento, come cambiare il colore del font, gli stili dei font, il colore
di sfondo della riga, il colore di sfondo della cella, ecc. Cambiando la tabella o le
proprietà della classe del campo nel evento in base ai valori del campo.

Nota La classe table ha una proprietà RowAttrs che è un array associativo di


attributi HTML per la riga della tabella. La classe del campo ha CellAttrs ,
ViewAttrs e EditAttrs per la cella della tabella, Visualizza tag e Modifica tag del
campo rispettivamente. Le chiavi di questi array devono essere attributi HTML validi
per il tag HTML, utilizzare sempre le lettere minuscole per le chiavi. I valori degli
attributi verranno emessi come attributi con doppia quotatura, quindi se hai
virgolette doppie nei tuoi valori, prova ad usare virgolette singole se possibile,
oppure usa "& quot;".
Per visualizzare le proprietà della classe di campo per lo sviluppo o il debug, è
possibile utilizzare la funzione var_dump di PHP nell'evento del server, ad es.
var_dump ($ this-> RowAttrs);
var_dump ($ this-> Marchio);
var_dump ($ this->> Trademark- CellAttrs);
var_dump ($ this-> Trademark-> EditAttrs);
var_dump ($ this->> Trademark- ViewAttrs);

Esempio

Cambia gli stili CSS di riga e celle:

function Row_Rendered () {
// Cambia il colore della riga nella pagina Elenco in base alle
classi Bootstrap
se ($ this-> Trademark-> ViewValue == "BMW") // Elenca solo la
pagina
$ this-> RowAttrs ["class"] = " Informazioni";
// Cambia il colore della cella della tabella
if ($ this-> PageID == "lista" || $ this-> PageID ==
"visualizza") { // List / Visualizza la pagina solo
se ($ this-> Cyl-> CurrentValue == 4) {
$ this-> Cyl-> CellAttrs ["style"] = "background-color:
#ffcccc";
} elseif ($ this-> Cyl-> CurrentValue == 6) {
$ this-> Cyl-> CellAttrs ["style"] = "background-color:
# ffcc99";

$ this-> Cyl-> CellAttrs ["style"] = "background-color:


#ffccff";
}
}

// Cambia lo stile del testo in base alle classi Bootstrap


se ($ this-> Category-> CurrentValue == "SPORTS")
$ this-> Category-> ViewAttrs ["class"] = "bg-warning text-
warning";
}

Row_Selecting Questo evento verrà chiamato prima di selezionare un record. L'argomento dell'evento è
il filtro (parte della clausola WHERE dell'SQL) per la selezione del record, è possibile
personalizzare il filtro per modificare il record da selezionare.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 20/54
26/5/2018 Eventi server e script client

Row_Selected Questo evento verrà chiamato dopo aver selezionato un record. L'argomento è il record
selezionato come matrice. L'evento è ancora attivato quando si inserisce un nuovo
record, ma in tal caso non esiste una riga "selezionata" e l'argomento è una matrice con
tutti i valori di campo come NULL.

Esempio

Disabilitare un campo nella pagina Modifica

function Row_Selected (& $ rs) {


if ($ this-> PageID == "edit") // Modifica pagina solo
$ this-> MyField-> Disabled = ($ rs ["MyField"] == "xxx");
// Disabilita un campo se il valore del campo è uguale a qualche
valore
}

Row_UpdateConflict Questo evento verrà chiamato se vengono rilevati dei conflitti prima di aggiornare un
record (se Verifica conflitti è abilitato, vedere Impostazione tabella (tablesetup.htm) ).
Gli argomenti dell'evento sono il vecchio record (come array) e il nuovo record (come
array) da aggiornare.

È possibile utilizzare questo evento per risolvere i conflitti in base ai propri criteri. Se si
desidera ignorare i conflitti o se sono stati risolti i conflitti nell'evento (impostando nuovi
valori nell'argomento rsnew) e si desidera continuare l'aggiornamento, restituire FALSE.
Altrimenti, restituire VERO. Di default l'evento restituisce TRUE.

Row_Updating Questo evento verrà chiamato prima di aggiornare un record. Gli argomenti dell'evento
sono gli array del vecchio e del nuovo record da aggiornare.

Esempio

Assicurati che il valore di un campo non sia cambiato

function Row_Updating (& $ rsold, & $ rsnew) {


if ($ rsnew ["Qty"] <$ rsold ["Qty"]) {
// Per annullare, imposta il valore di ritorno su False
$ this-> CancelMessage = "Il nuovo la quantità deve essere
maggiore della vecchia quantità. ";
return FALSE;
} return TRUE; }

Row_Updated Questo evento verrà chiamato dopo aver aggiornato un record. Gli argomenti dell'evento
sono gli array del vecchio e del nuovo record aggiornati.

Esempio

Dopo aver aggiornato un campo nella tabella dei dettagli, aggiornare un campo nella
tabella principale.

function Row_Updated ($ rsold, & $ rsnew) {


// var_dump (rsold, rsnew); morire(); // Stampa il vecchio e il
nuovo record e termina lo script
$ rs = ["FieldInMasterTable" => $ rsnew
["FieldInDetailTable"]]; // Imposta valori di campo
(new cMasterTable ()) -> Aggiorna ($ rs,
"PrimaryKeyFieldInMasterTable =". $ Rsold
["ForeignKeyFieldInDetailTable"]); // Nota: la classe Table è
denominata c <TableName> . Supponi che PrimaryKeyFieldInMasterTable
sia intero.
}

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 21/54
26/5/2018 Eventi server e script client

Grid_Inserting Per l'utilizzo con Grid-Add per una tabella e Master / Detail-Add per una tabella di
dettaglio, questo evento verrà chiamato prima di inserire i record. Questo evento non ha
argomenti.

È possibile utilizzare questo evento per controllare tutti i record da inserire. Se si


desidera annullare l'inserimento, restituire FALSE. Altrimenti, restituire VERO. Di default
l'evento restituisce TRUE.

Nota Se devi solo controllare un singolo record, non è necessario utilizzare questo
evento, usa semplicemente Row_Inserting (vedi sopra) che verrà chiamato per
ogni riga nella griglia.

Esempio

Controlla tutti i record prima di inserirli. Si noti che questo evento viene chiamato prima
di Row_Inserting , i valori dei campi non sono ancora stati caricati, ma è possibile
caricarli da soli.

function Grid_Inserting () {
$ rsnew = $ this-> GetGridFormValues (); // Ottieni i valori
del modulo dei nuovi record come una matrice di array
// var_dump ($ rsnew); morire(); // Stampa i record e termina
lo script
$ sum = 0;
foreach ($ rsnew as $ row) // Passa attraverso i nuovi record
$ sum + = intval ($ row ["Percentage"]);
if ($ sum <100) {
// Per annullare, impostare il valore di ritorno su False
$ this-> setFailureMessage ("Il totale delle percentuali
deve essere 100.");
return FALSE;
} return TRUE; }

Nota I dati restituiti da GetGridFormValues () sono di sola lettura, NON


provare a modificare i valori. Per modificare i valori, usa Row_Inserting (vedi
sopra) che verrà chiamato per ogni riga nella griglia.

Grid_Inserted Per l'uso con Grid-Add per una tabella e Master / Detail-Add per una tabella di
dettaglio, questo evento verrà chiamato dopo aver inserito tutti i record. L'argomento
dell'evento ( $ rsnew ) è una matrice di record inseriti (recuperati dal database).

Ad esempio, è possibile utilizzare questo evento per aggiornare un campo nella tabella
principale (simile all'esempio per Row_Updated in alto) dopo Master / Detail-Add .

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 22/54
26/5/2018 Eventi server e script client

Grid_Updating Per l'uso con Grid-Edit per una tabella e Master / Detail-Edit per una tabella di
dettaglio, questo evento verrà chiamato prima di aggiornare i record. L'argomento
dell'evento ( $ rsold ) è una matrice di record da aggiornare (recuperati dal database).

È possibile utilizzare questo evento per controllare tutti i record da aggiornare. Se si


desidera annullare l'aggiornamento, restituire FALSE. Altrimenti, restituire VERO. Di
default l'evento restituisce TRUE.

Nota Se devi solo controllare un singolo record, non è necessario utilizzare questo
evento, usa semplicemente Row_Updating (vedi sopra) che verrà chiamato per
ogni riga nella griglia.

Esempio

Controllare tutti i record prima dell'aggiornamento. Si noti che questo evento viene
chiamato prima di Row_Updating , i valori dei campi non sono ancora stati caricati, ma
è possibile caricarli da soli.

funzione Grid_Updating ($ rsold) {


$ rsnew = $ this-> GetGridFormValues (); // Ottieni i valori
del modulo dei nuovi record come una matrice di array
// var_dump ($ rsnew); morire(); // Stampa i record e termina
lo script
$ oldtotal = 0;
foreach ($ rsold as $ row) // Passa in rassegna i vecchi record
$ oldtotal + = intval ($ row ["Subtotal"]); $ newtotale =
0; foreach ($ rsnew as $ row) // Passa attraverso i nuovi
record $ newtotal + = intval ($ row ["Subtotal"]); if ($
newtotal <$ oldtotal) { // Per annullare, impostare il
valore di ritorno su False $ this-> setFailureMessage ("Il
nuovo totale deve essere maggiore del vecchio totale.");
return FALSE;

return TRUE;
}

Nota I dati restituiti da GetGridFormValues () sono di sola lettura, NON


provare a modificare i valori. Per modificare i valori, usa Row_Updating (vedi
sopra) che verrà chiamato per ogni riga nella griglia.

Grid_Updated Per l'utilizzo con Grid-Edit per una tabella e Master / Detail-Edit per una tabella di
dettaglio, questo evento verrà chiamato dopo aver aggiornato tutti i record. L'argomento
dell'evento ( $ rsold e $ rsnew ) è una matrice di record prima e dopo l'aggiornamento
(recuperati dal database).

Ad esempio, è possibile utilizzare questo evento per aggiornare un campo nella tabella
principale (simile all'esempio per Row_Updated sopra) dopo Master / Detail-Edit .

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 23/54
26/5/2018 Eventi server e script client

Email_Sending Questo evento viene generato prima dell'invio della notifica via email. È possibile
personalizzare il contenuto dell'email utilizzando questo evento. L'evento Email_Sending
ha i seguenti parametri:

Email : l'istanza dell'oggetto email che contiene tutte le informazioni sull'email da


inviare. È un'istanza della classe cEmail (vedi sotto).

Arg : un array che contiene informazioni aggiuntive.

Se aggiungi, il nuovo record nel formato dell'array può essere accessibile da $ Args
["rsnew"]. Se Copia, il vecchio record nel formato dell'array può essere accessibile da $
Args ["rsold"]. Se Modifica / Aggiorna, i vecchi dati dei record nel formato dell'array
possono essere accessibili da $ Args ["rsold"], i nuovi dati dei record nel formato
dell'array possono essere accessibili da $ Args ["rsnew"] . Se Registra, il nuovo record
nel formato dell'array può essere accessibile da $ Args ["rs"]. Puoi ottenere un valore di
campo, ad es

$ rsnew = $ Args ["rsnew"];


$ MyValue = $ rsnew ["MyField"];

$ MyValue = $ Args ["rsnew"] ["MyField"];

Restituisci FALSE se vuoi annullare l'invio dell'e-mail.

Se Grid-Aggiungi / Modifica o Aggiorna la pagina, ci sono più di un record, gli argomenti


sono array di array.

Esempio

Supponiamo che ci sia un campo email nel record e che tu voglia cambiare il destinatario
al valore di quel campo.

funzione Email_Sending (& $ Email, & $ Args) {


// var_dump ($ Email);
// var_dump ($ args);
//Uscita();
if (CurrentPageID () == "aggiungi") { // Se Aggiungi pagina
$ Email-> Destinatario = $ Args ["rsnew"] ["MyEmailField"];
// Cambia destinatario in un valore di campo nel nuovo record
$ Email-> Subject = "My New Subject"; // Cambia oggetto
$ Email-> Contenuto. = "\ NAggiunto da". CURRENTUSERNAME
(); // Aggiungi contenuto aggiuntivo
}
return TRUE;
}

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 24/54
26/5/2018 Eventi server e script client

Lookup_Selecting Questo evento viene generato prima di creare l'SQL per selezionare i record dalla tabella
di ricerca. Puoi usare questo evento per cambiare i filtri.

Nel caso, l'SQL e il filtro per la ricerca possono essere visualizzati da:

var_dump ($ this-> LookupFilters);

La proprietà LookupFilters è una matrice, i valori chiave sono:

S SQL (solo clausola SELECT e clausola FROM)

d ID base di date

f Modello di filtro per il campo filtro <n> (dove n = da 1 a 4), per impostazione
<n> predefinita è nel formato di "FilterField <n> = {filter_value}" dove "
{filter_value}" deve essere sostituito dal valore selezionato ) inviato dal lato
client da parte di Ajax.

t Il tipo di dati del campo filtro. Non modificare a meno che non si modifichi il
<n> campo filtro in f <n>.

fn La funzione utilizzata per concatenare il filtro, per impostazione predefinita è


<n> vuota e la funzione predefinita "ew_AddFilter" viene utilizzata per concatenare i
filtri con "AND".

Esempio 1

Aggiungi un filtro aggiuntivo al filtro della tabella di ricerca

function Lookup_Selecting ($ fld, & $ filter) {


// var_dump ($ this-> LookupFilters); // Rimuovi il commento
per visualizzare l'SQL e i filtri
if ($ fld-> FldName == "MyLookupField")
ew_AddFilter ($ filter, "MyField = 'xxx'"); // Supponiamo
che il campo sia di tipo stringa
}

Esempio 2

Cambia il filtro predefinito di un campo filtro da "` MyFilterField` IN ({filter_value}) "a"


`MyFilterField`> ({filter_value})"

function Lookup_Selecting ($ fld, & $ filter) {


// var_dump ($ this-> LookupFilters); // Rimuovi il commento
per visualizzare l'SQL e i filtri
if ($ fld-> FldName == "MyLookupField")
$ fld-> LookupFilters ["f1"] = str_replace ("IN", ">", $
fld-> LookupFilters [ "f1"]);
}

UserID_Filtering Da utilizzare con la sicurezza dell'ID utente. (Vedi Impostazioni di sicurezza


(securitysetup.htm) ) Questo evento viene attivato prima di aggiungere il filtro ID utente
alla clausola WHERE della tabella. È possibile modificare, sostituire o aggiungere filtri in
modo che l'utente possa accedere a più o meno record a cui può accedere tramite gli ID
utente originariamente caricati.

Esempio

Si supponga di avere 2 campi ID utente nella tabella corrente e nella tabella utente e che
si desideri filtrare in base ai campi ID utente.

function UserID_Filtering (& $ filter) {


ew_AddFilter ($ filter, "MyUserIDField2 =". CurrentUserInfo
("MyUserIDField2InUserTable")); // Supponiamo che il campo sia di
tipo intero
}

Tabella specifica -> Aggiungi / Copia pagina

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 25/54
26/5/2018 Eventi server e script client

Page_Load Questo evento verrà chiamato dopo la connessione al database.

Page_Render Questo evento verrà chiamato prima dell'emissione dell'HTML per la pagina. È possibile
utilizzare questo evento per apportare alcune modifiche dell'ultimo minuto alla pagina
prima che venga emessa.

Page_Unload Questo evento verrà chiamato prima della chiusura della connessione al database.

Page_DataRendering Questo evento verrà chiamato dopo che header.php è incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte superiore del contenuto della pagina.

Page_DataRendered Questo evento verrà chiamato prima che il footer.php sia incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte inferiore del contenuto della pagina.

Page_Redirecting Questo evento verrà chiamato prima di reindirizzare ad un'altra pagina. L'argomento è
l'URL da reindirizzare a.

Per impostazione predefinita, dopo aver inserito un utente del record viene reindirizzato
alla pagina Elenco. Puoi cambiarlo usando Return Page (vedi Table Setup
(tablesetup.htm) ). Tuttavia, se si desidera modificare il codice, è anche possibile
utilizzare questo evento.

Message_Showing Questo evento viene generato prima che venga mostrato il messaggio memorizzato nella
variabile di sessione.

Il primo argomento $ msg è il messaggio da mostrare, il secondo argomento $ type è il


tipo del messaggio, i possibili valori di tipo sono: "" (stringa vuota), "successo", "errore"
e "avviso".

Esempio

Sostituisci un messaggio di errore con un messaggio personalizzato

function Message_Showing (& $ msg, $ type) {


if ($ type == 'success') {
// $ msg = "il tuo messaggio di successo";
} elseif ($ type == 'failure') {
if (strpos ($ msg, "alcuni messaggi standard")! == FALSE)
// Il messaggio originale contiene alcune parole chiave che si
desidera sostituire
$ msg = "My custom message" ;
} elseif ($ type == 'warning') {
// $ msg = "il tuo messaggio di avviso";
} else {
// $ msg = "il tuo messaggio";
}
}

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 26/54
26/5/2018 Eventi server e script client

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. In generale, è possibile accedere ai dati
del modulo da $ this -> <Field> -> FormValue (ad es. $ This-> HP-> FormValue). In
alternativa, è possibile ottenere prima tutti i valori del modulo in un array, ad es

$ rs = $ this-> GetFieldValues ("FormValue");

Un argomento $ CustomError viene passato all'evento, è possibile aggiungere il


messaggio di errore e restituire FALSE se i valori del modulo non superano la convalida.

Esempio

Assicurati che un valore di campo intero soddisfi un determinato requisito

function Form_CustomValidate (& $ CustomError) {


$ rs = $ this-> GetFieldValues ("FormValue"); // Ottieni i
valori del form come array
if (intval ($ rs ["Qty"])% 10 <> 0) {
// Restituisce il messaggio di errore in $ CustomError
$ CustomError = "La quantità dell'ordine deve essere un
multiplo di 10.";
return FALSE;
} return TRUE; }

Nota Se si utilizza questo evento server, assicurarsi di aver abilitato la convalida


sul lato server, vedere Convalida in Impostazioni PHP (phpsetup.htm) .

Tabella specifica -> Elimina pagina

Page_Load Questo evento verrà chiamato dopo la connessione al database.

Page_Render Questo evento verrà chiamato prima dell'emissione dell'HTML per la pagina. È possibile
utilizzare questo evento per apportare alcune modifiche dell'ultimo minuto alla pagina
prima che venga emessa.

Page_Unload Questo evento verrà chiamato prima della chiusura della connessione al database.

Page_DataRendering Questo evento verrà chiamato dopo che header.php è incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte superiore del contenuto della pagina.

Page_DataRendered Questo evento verrà chiamato prima che il footer.php sia incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte inferiore del contenuto della pagina.

Message_Showing Questo evento viene generato prima che venga mostrato il messaggio memorizzato nella
variabile di sessione. Puoi usare questo evento per cambiare il messaggio che viene
passato all'evento come argomento.

Page_Redirecting Questo evento verrà chiamato prima di reindirizzare ad un'altra pagina. L'argomento
dell'evento è l'URL da reindirizzare a.

Per impostazione predefinita, dopo l'eliminazione dei record, l'utente viene reindirizzato
alla pagina Elenco. Puoi cambiarlo usando questo evento.

Tabella specifica -> Modifica pagina

Page_Load Questo evento verrà chiamato dopo la connessione al database.

Page_Render Questo evento verrà chiamato prima dell'emissione dell'HTML per la pagina. È possibile
utilizzare questo evento per apportare alcune modifiche dell'ultimo minuto alla pagina
prima che venga emessa.

Page_Unload Questo evento verrà chiamato prima della chiusura della connessione al database.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 27/54
26/5/2018 Eventi server e script client

Page_DataRendering Questo evento verrà chiamato dopo che header.php è incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte superiore del contenuto della pagina.

Page_DataRendered Questo evento verrà chiamato prima che il footer.php sia incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte inferiore del contenuto della pagina.

Message_Showing Questo evento viene generato prima che venga mostrato il messaggio memorizzato nella
variabile di sessione. Puoi usare questo evento per cambiare il messaggio che viene
passato all'evento come argomento.

Page_Redirecting Questo evento verrà chiamato prima di reindirizzare ad un'altra pagina. L'argomento
dell'evento è l'URL da reindirizzare a.

Per impostazione predefinita, dopo l'aggiornamento di un utente del record viene


reindirizzato alla pagina Elenco. Puoi cambiarlo usando Return Page (vedi Table Setup
(tablesetup.htm) ). Tuttavia, se si desidera modificare il codice, è possibile utilizzare
questo evento.

Tabella specifica -> Pagina elenco

Page_Load Questo evento verrà chiamato dopo la connessione al database.

Nota I collegamenti di esportazione sono memorizzati come oggetto cListOptions


(vedi anche ListOptions_Load , ListOptions_Rendering e
ListOptions_Rendered evento di seguito), puoi manipolare i collegamenti allo
stesso modo. I nomi di default delle opzioni sono:
stampare
html
eccellere
parola
xml
csv
PDF
e-mail
Si noti che i nomi sono in minuscolo e fanno distinzione tra maiuscole e minuscole.

Esempio 1

Nascondi il link di esportazione in PDF nella pagina Elenco:

function Page_Load () {
$ item = @ $ this-> ExportOptions-> Items ["pdf"];
se ($ item) $ item-> Visible = FALSE; }

Esempio 2

Aggiungi un collegamento personalizzato alla fine dei link di esportazione

function Page_Load () {
$ item = & $ this-> ExportOptions-> Add ("MyName");
$ item-> Body = "<a href='MyURL'> My Link </a>";
}

Esempio 3

Aggiungi un'azione personalizzata per inviare i record selezionati tramite POST HTTP

function Page_Load () {
$ this-> CustomActions ["star"] = "Aggiungi stella"; // Dove
"star" è l'id e "Add Star" è la didascalia dell'azione
personalizzata
}

L'aggiunta di un'azione personalizzata per nome e didascalia è in realtà una forma


abbreviata di

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 28/54
26/5/2018 Eventi server e script client

$ this-> CustomActions ["star"] = new cListAction ("stella",


"Aggiungi stella");

ed è supportato solo per compatibilità con le versioni precedenti. Utilizzare la classe


cListAction in modo da avere più opzioni per l'azione personalizzata. Il costruttore della
classe cListAction è

function __construct ($ Action, $ Caption, $ Allow = TRUE, $


SubmitType = EW_ACTION_POSTBACK, $ SelectType = EW_ACTION_MULTIPLE,
$ ConfirmMsg = "", $ Icon = "glyphicon glyphicon-star ewIcon", $
Success = "")

$ SubmitType è EW_ACTION_POSTBACK ( inviato da HTTP POST) o


EW_ACTION_AJAX ( inviato da Ajax).

$ SelectType è EW_ACTION_MULTIPLE (invia i record selezionati) o


EW_ACTION_SINGLE (invia solo il record corrente).

$ Success è il nome della funzione di callback JavaScript, se presente. È possibile


inserire la funzione di richiamata nella sezione Codice globale del client (vedere di
seguito).

Nota Per elaborare l'azione, è anche necessario scrivere un gestore con l' evento
del server Row_CustomAction (vedere di seguito).

Esempio 4

Aggiungi un'azione personalizzata per inviare i record selezionati da Ajax

function Page_Load () {
$ this-> CustomActions ["star"] = new cListAction ("stella",
"Aggiungi stella", IsLoggedIn (), EW_ACTION_AJAX,
EW_ACTION_MULTIPLE, "Aggiungi stella ai record selezionati?",
"glyphicon glyphicon-star ewIcon ");
}

Nota Per elaborare l'azione, è anche necessario scrivere un gestore con l' evento
del server Row_CustomAction (vedere di seguito).

Esempio 5

Quando vengono utilizzati i modelli personalizzati (vedere Modelli personalizzati


(clienttpt.htm) ), verranno utilizzati per l'esportazione in Word / Excel / PDF / Email
(esclusi PHPExcel e PHPWord) per impostazione predefinita. Puoi comunque disabilitarlo.
Le proprietà corrispondenti della pagina (booleana) sono: ExportExcelCustom ,
ExportWordCustom , ExportPdfCustom ed ExportEmailCustom .

function Page_Load () {
$ this-> ExportExcelCustom = FALSE; // Disabilita utilizzando i
modelli personalizzati per l'esportazione in Excel
}

Page_Render Questo evento verrà chiamato prima dell'emissione dell'HTML per la pagina. È possibile
utilizzare questo evento per apportare alcune modifiche dell'ultimo minuto alla pagina
prima che venga emessa.

Page_Unload Questo evento verrà chiamato prima della chiusura della connessione al database.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 29/54
26/5/2018 Eventi server e script client

Page_DataRendering Questo evento verrà chiamato dopo che header.php è incluso. Puoi utilizzare questo
evento per aggiungere contenuti prima della tabella principale.

Esempio

Nascondi un campo dalla tabella principale

function Page_DataRendering () {
$ this-> MyField-> Visible = FALSE; // Nascondi un campo
chiamato "MyField"
}

Page_DataRendered Questo evento verrà chiamato prima che il footer.php sia incluso. Puoi utilizzare questo
evento per aggiungere contenuti dopo la tabella principale.

Page_Redirecting Questo evento verrà chiamato prima di reindirizzare ad un'altra pagina. L'argomento
dell'evento è l'URL da reindirizzare a.

Message_Showing Questo evento viene generato prima che venga mostrato il messaggio memorizzato nella
variabile di sessione. Puoi usare questo evento per cambiare il messaggio che viene
passato all'evento come argomento.

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. Vedere la descrizione di
Form_CustomValidate per la pagina Aggiungi / Copia sopra.

ListOptions_Load Questo evento verrà chiamato prima che la tabella principale sia resa. Usa questo evento
per modificare le colonne non di dati della tabella principale (cioè i link e la casella di
controllo per ogni record). Puoi modificare queste colonne o aggiungere le tue colonne
usando questo evento. Puoi ottenere una colonna per nome usando $ this->
ListOptions-> Item ["name"] .

Nota I seguenti nomi predefiniti sono riservati, non li usano per le tue colonne.
Questi nomi sono sensibili al maiuscolo / minuscolo e sono in minuscolo, ad
eccezione dei nomi delle tabelle di dettaglio.
casella di controllo
vista
copia
Elimina
modificare
detail_ <DetailTable> - Colonna della tabella dei dettagli
dettagli : la colonna Multiple Master / Detail
anteprima - colonna per la riga di anteprima dell'estensione Anteprima
dettagli (solo per utenti registrati)
sequenza - colonna per numero di sequenza
pulsante - colonna per il gruppo di pulsanti o il menu a discesa

Esempio 1

Aggiungi una nuova colonna.

function ListOptions_Load () {
$ item = & $ this-> ListOptions-> Add ("new");
$ item-> Header = "MyCaption"; // Imposta l'intestazione della
colonna (per la pagina List)
$ item-> OnLeft = TRUE; // Collega a sinistra
$ item-> MoveTo (0); // Sposta la colonna sull'indice
specificato
}

Nota Se hai abilitato Usa pulsanti come collegamenti e / o Usa menu a


discesa dei pulsanti per i collegamenti (vedi Impostazioni PHP (phpsetup.htm)
), tieni presente che la funzione nasconderà le opzioni dell'elenco e cercherà di

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 30/54
26/5/2018 Eventi server e script client

spostare i collegamenti ipertestuali al gruppo di pulsanti o al menu a discesa. Se la


tua proprietà Body (vedi sotto) non è un collegamento ipertestuale, non può essere
mostrata nel gruppo di pulsanti o nel menu a discesa, devi rimuovere l'opzione
elenco dal gruppo di pulsanti o dal menu a discesa aggiungendo, ad esempio
$ item-> ShowInButtonGroup = FALSE;
e/o
$ item-> ShowInDropDown = FALSE;

Esempio 2

Nascondi la colonna "vista".

function ListOptions_Load () {
$ this-> ListOptions-> Items ["view"] -> Visible = FALSE;
}

Esempio 3

Nascondere una tabella di dettaglio denominata "MyDetailTable" in Preview Row o


Overlay (richiede l' estensione Preview Detail (thirdparty.htm) che è solo per gli utenti
registrati)

function ListOptions_Load () {
$ this-> DetailPages-> Items ["MyDetailTable"] -> Visible =
FALSE;
}

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 31/54
26/5/2018 Eventi server e script client

ListOptions_Rendering Questo evento verrà chiamato prima che le opzioni di elenco vengano visualizzate. Per
accedere all'oggetto campo della riga corrente, puoi usare $ this -> <Field> ->
<Property> (es. $ This-> HP-> CurrentValue ).

Nota NON provare a mostrare / nascondere una colonna in modo dinamico


impostando la proprietà Visible dell'opzione di elenco in questo evento. Se la
colonna è visibile in una riga ma invisibile in un'altra, la tabella sarà malformata.

Esempio 1

Disabilita Master / Dettaglio-Aggiungi / Modifica / Visualizza, ad esempio se il nome della


tabella dei dettagli è "orderdetails"

function ListOptions_Rendering () {
$ GLOBALS ["orderdetails_grid"] -> DetailAdd = (... condizione
...); // Imposta su TRUE o FALSE condizionatamente
$ GLOBALS ["orderdetails_grid"] -> DetailEdit = (... condizione
...); // Imposta su TRUE o FALSE condizionatamente
$ GLOBALS ["orderdetails_grid"] -> DetailView = (... condizione
...); // Imposta su TRUE o FALSE in modo condizionale
}

Esempio 2

Aggiungi una classe CSS a tutte le celle (inclusa la cella di intestazione / piè di pagina) di
un campo nella pagina Elenco

function ListOptions_Rendering () {
$ this-> Category-> AddClass ("visible-lg"); // Aggiungi la
classe CSS per mostrare il campo solo per lo schermo grande
}

Gli appunti
1. Il metodo AddClass () aggiunge classe a tutte le celle, incluse quelle
nell'intestazione e nel piè di pagina della tabella. Non utilizzare questo
metodo se si desidera aggiungere solo la classe per la riga corrente.
2. Utilizzare questo esempio con attenzione se la pagina Elenco supporta In
linea / Grid-Aggiungi / Copia / Modifica. Se un campo è visibile solo sullo
schermo grande, non può essere aggiornato in schermi più piccoli.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 32/54
26/5/2018 Eventi server e script client

ListOptions_Rendered Questo evento verrà chiamato dopo il rendering delle opzioni di elenco. Utilizzare questo
evento per modificare il contenuto delle colonne non di dati per il record. Per accedere
all'oggetto campo della riga corrente, puoi usare $ this -> <Field> ->
<Property> (es. $ This-> HP-> CurrentValue ).

Nota NON provare a mostrare / nascondere una colonna in modo dinamico


impostando la proprietà Visible dell'opzione di elenco in questo evento. Se la
colonna è visibile in una riga ma invisibile in un'altra, la tabella sarà malformata. Se
si desidera nascondere il contenuto in modo dinamico, è possibile impostare la
proprietà Body come stringa vuota.

Esempio 1

Imposta il contenuto della nuova colonna in modo dinamico in base a un valore di


campo.

function ListOptions_Rendered () {
if ($ this-> MyField-> CurrentValue == "xxx") {
$ this-> ListOptions-> Items ["new"] -> Body = "yyy";
} else {
$ this-> ListOptions-> Items ["new"] -> Clear (); //
Imposta corpo = ""
}
}

Esempio 2

Aggiungi un link per eseguire un'azione personalizzata per la riga di Ajax.

function ListOptions_Rendered () {
$ this-> ListOptions-> Items ["new"] -> Body = "<a href = \" #
\ "onclick = \" restituisce ew_SubmitAction (event, {action:
'star', metodo: 'ajax', msg: 'Aggiungi stella?', chiave: ". $ this-
> KeyToJson ()."}); \ "> Aggiungi stella </a>";
}

Nota Per elaborare l'azione, è anche necessario scrivere un gestore con l' evento
del server Row_CustomAction (vedere di seguito).

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 33/54
26/5/2018 Eventi server e script client

Row_CustomAction Se è stato utilizzato l' evento server Page_Load (vedere sopra) per aggiungere
un'azione personalizzata alla pagina Elenco, la pagina mostrerà la colonna della casella di
controllo per consentire agli utenti di selezionare i record (simile a Multi-Update e Mulit-
Delete). Quando l'utente fa clic sul link o sul pulsante di azione personalizzato, la pagina
verrà postata su se stessa e questo evento verrà attivato (dopo Page_Load e prima di
Page_Render ) per ciascuna riga selezionata per elaborare l'azione personalizzata.

Restituisce TRUE per passare al record successivo o restituire FALSE per interrompere
l'azione personalizzata.

Esempio

Aggiorna lo stato dei record selezionati, assumendo che la tabella abbia un campo
denominato "Speciali" per la memorizzazione dello stato.

function Row_CustomAction ($ action, $ row) {


if ($ action == "star") { // Controlla il nome dell'azione
$ rsnew = ["Starred" => "Y", ...]; // Matrice di campi da
aggiornare
$ result = $ this-> Update ($ rsnew); // Nota: il metodo
Update () aggiorna il record corrente solo
se (! $ Result ) { // Fallimento
$ this-> setFailureMessage ("Impossibile aggiornare record, ID =".
$ Row ["ID"]);
return FALSE; // Abort and rollback
} elseif ($ this-> SelectedIndex == $ this-> SelectedCount)
{ // Ultima riga
$ this-> setSuccessMessage ("Tutti i record
selezionati aggiornati.");

return TRUE; // successo


}
}

Nota Se si annulla l'azione restituendo FALSE nell'evento, è possibile utilizzare il


metodo setFailureMessage () per impostare il messaggio. Tuttavia, si noti che se
l'evento restituisce FALSE, le righe successive non verranno elaborate e il database
verrà modificato per le righe precedenti (se il database supporta la transazione).
Pertanto, se si desidera annullare l'azione per una riga senza influire su altre righe,
l'evento dovrebbe comunque restituire VERO e utilizzare il metodo
setSuccessMessage () per impostare il messaggio.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 34/54
26/5/2018 Eventi server e script client

Page_Exporting Questo evento verrà chiamato prima dell'esportazione della pagina. È possibile utilizzare
questo evento per aggiungere il codice aggiuntivo all'inizio del file da esportare.
Restituisci FALSE per saltare l'esportazione predefinita e utilizzare l' evento Row_Export
(vedi sotto). Restituisce TRUE per utilizzare l'esportazione predefinita e saltare l' evento
Row_Export . Controlla $ this-> Esporta per il tipo di esportazione (ad esempio
"excel", "word"). Il contenuto del documento di esportazione è $ this->
ExportDoc-> Text (eccetto PHPExcel / PHPWord).

Nota Se si utilizzano i modelli personalizzati (vedere Modelli personalizzati


(clienttpt.htm) ), questo evento può essere sovrascritto. È possibile disabilitare
l'uso di modelli personalizzati per report, vedere l'esempio di Page_Load sopra.

Esempio

Aggiungi un titolo al documento di esportazione e usa l'esportazione personalizzata se


esporta in Excel (non PHPExcel)

function Page_Exporting () {
if ($ this-> Export == "excel") {
$ this-> ExportDoc-> Text = "<p> My Title </ p>"; //
Aggiungi un titolo
return FALSE; // Restituisce FALSE per saltare
l'esportazione predefinita e utilizzare l'evento Row_Export
}
return TRUE; // Restituisce TRUE per utilizzare l'esportazione
predefinita e saltare l'evento Row_Export
}

Row_Export Se si restituisce FALSE nell'evento Page_Exporting (vedere sopra), questo evento verrà
chiamato quando viene esportata una riga per l'esportazione nel proprio codice.

L'argomento ( $ rs ) è un array del record da esportare. I valori in $ rs sono valori di


database non formattati. Se si desidera esportare valori formattati, utilizzare $ this->
MyField-> ViewValue .

Gli appunti
1. Se si restituisce TRUE nell'evento Page_Exporting (vedere sopra), verrà
utilizzata l'esportazione predefinita e questo evento NON verrà chiamato.
2. Se si utilizzano i modelli personalizzati (vedere Modelli personalizzati
(clienttpt.htm) ), questo evento può essere sovrascritto. È possibile
disabilitare l'uso di modelli personalizzati per report, vedere l'esempio di
Page_Load sopra.

Esempio

Esportare un record con codice personalizzato se esportato in Excel (non PHPExcel)

function Row_Export ($ rs) {


if ($ this-> Export == "excel")
$ this-> ExportDoc-> Text. = "<div>". $ this-> MyField->
ViewValue. "</ div>"; // Crea HTML con il valore del campo: $ rs
["MyField"] o $ this-> MyField-> ViewValue
}

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 35/54
26/5/2018 Eventi server e script client

Page_Exported Questo evento verrà chiamato dopo che la pagina è stata esportata. È possibile utilizzare
questo evento per aggiungere il codice aggiuntivo alla fine del file da esportare.

Nota Se si utilizzano i modelli personalizzati (vedere Modelli personalizzati


(clienttpt.htm) ), questo evento può essere sovrascritto. È possibile disabilitare
l'uso di modelli personalizzati per report, vedere l'esempio di Page_Load sopra.

Esempio

Aggiungi un piè di pagina al documento di esportazione se esporti in Excel (non


PHPExcel)

function Page_Exported () {
if ($ this-> Export == "excel")
$ this-> ExportDoc-> Text. = "my footer"; // Aggiungi un
footer
// die ($ this-> ExportDoc-> Text); // Visualizza l'intero
documento di esportazione per il debug
}

Tabella specifica -> Pagina di aggiornamento multiplo

Page_Load Questo evento verrà chiamato dopo la connessione al database.

Page_Render Questo evento verrà chiamato prima dell'emissione dell'HTML per la pagina. È possibile
utilizzare questo evento per apportare alcune modifiche dell'ultimo minuto alla pagina
prima che venga emessa.

Page_Unload Questo evento verrà chiamato prima della chiusura della connessione al database.

Page_DataRendering Questo evento verrà chiamato dopo che header.php è incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte superiore del contenuto della pagina.

Page_DataRendered Questo evento verrà chiamato prima che il footer.php sia incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte inferiore del contenuto della pagina.

Page_Redirecting Questo evento verrà chiamato prima di reindirizzare ad un'altra pagina. L'argomento
dell'evento è l'URL da reindirizzare a.

Per impostazione predefinita, dopo l'aggiornamento dei record, l'utente viene


reindirizzato alla pagina Elenco. Puoi cambiarlo usando questo evento.

Message_Showing Questo evento viene generato prima che venga mostrato il messaggio memorizzato nella
variabile di sessione. Puoi usare questo evento per cambiare il messaggio che viene
passato all'evento come argomento.

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. Vedere la descrizione di
Form_CustomValidate per la pagina Aggiungi / Copia sopra.

Tabella specifica -> Pagina rapporto

Page_Load Questo evento verrà chiamato dopo la connessione al database.

Page_Render Questo evento verrà chiamato prima dell'emissione dell'HTML per la pagina. È possibile
utilizzare questo evento per apportare alcune modifiche dell'ultimo minuto alla pagina
prima che venga emessa.

Page_Unload Questo evento verrà chiamato prima della chiusura della connessione al database.

Page_DataRendering Questo evento verrà chiamato dopo che header.php è incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte superiore del contenuto della pagina.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 36/54
26/5/2018 Eventi server e script client

Page_DataRendered Questo evento verrà chiamato prima che il footer.php sia incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte inferiore del contenuto della pagina.

Page_Redirecting Questo evento verrà chiamato prima di reindirizzare ad un'altra pagina. L'argomento
dell'evento è l'URL da reindirizzare a.

Message_Showing Questo evento viene generato prima che venga mostrato il messaggio memorizzato nella
variabile di sessione. Puoi usare questo evento per cambiare il messaggio che viene
passato all'evento come argomento.

Tabella specifica -> Pagina di ricerca

Page_Load Questo evento verrà chiamato dopo la connessione al database.

Page_Render Questo evento verrà chiamato prima dell'emissione dell'HTML per la pagina. È possibile
utilizzare questo evento per apportare alcune modifiche dell'ultimo minuto alla pagina
prima che venga emessa.

Page_Unload Questo evento verrà chiamato prima della chiusura della connessione al database.

Page_DataRendering Questo evento verrà chiamato dopo che header.php è incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte superiore del contenuto della pagina.

Page_DataRendered Questo evento verrà chiamato prima che il footer.php sia incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte inferiore del contenuto della pagina.

Page_Redirecting Questo evento verrà chiamato prima di reindirizzare ad un'altra pagina. L'argomento
dell'evento è l'URL da reindirizzare a.

Per impostazione predefinita, l'utente viene reindirizzato alla pagina Elenco dopo che i
criteri di ricerca sono stati elaborati. Puoi cambiarlo usando questo evento.

Message_Showing Questo evento viene generato prima che venga mostrato il messaggio memorizzato nella
variabile di sessione. Puoi usare questo evento per cambiare il messaggio che viene
passato all'evento come argomento.

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. Vedere la descrizione di
Form_CustomValidate per la pagina Aggiungi / Copia sopra.

Tabella specifica -> Visualizza pagina

Page_Load Questo evento verrà chiamato dopo la connessione al database.

Page_Render Questo evento verrà chiamato prima dell'emissione dell'HTML per la pagina. È possibile
utilizzare questo evento per apportare alcune modifiche dell'ultimo minuto alla pagina
prima che venga emessa.

Page_Unload Questo evento verrà chiamato prima della chiusura della connessione al database.

Page_DataRendering Questo evento verrà chiamato dopo che header.php è incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte superiore del contenuto della pagina.

Page_DataRendered Questo evento verrà chiamato prima che il footer.php sia incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte inferiore del contenuto della pagina.

Page_Redirecting Questo evento verrà chiamato prima di reindirizzare ad un'altra pagina. L'argomento
dell'evento è l'URL da reindirizzare a.

Message_Showing Questo evento viene generato prima che venga mostrato il messaggio memorizzato nella
variabile di sessione. Puoi usare questo evento per cambiare il messaggio che viene
passato all'evento come argomento.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 37/54
26/5/2018 Eventi server e script client

Page_Exporting Questo evento verrà chiamato prima dell'esportazione della pagina. È possibile utilizzare
questo evento per aggiungere il codice aggiuntivo all'inizio del file da esportare.
Restituisci FALSE per saltare l'esportazione predefinita e utilizzare l' evento Row_Export
(vedi sotto). Restituisce TRUE per utilizzare l'esportazione predefinita e saltare l' evento
Row_Export . Controlla $ this-> Esporta per il tipo di esportazione (ad esempio
"excel", "word"). Il contenuto del documento di esportazione è $ this->
ExportDoc-> Text .

Nota Se si utilizzano i modelli personalizzati (vedere Modelli personalizzati


(clienttpt.htm) ), questo evento può essere sovrascritto. È possibile disabilitare
l'uso di modelli personalizzati per report, vedere l'esempio di Page_Load sopra.

Row_Export Se si restituisce FALSE nell'evento Page_Exporting (vedere sopra), questo evento verrà
chiamato quando viene esportata una riga per l'esportazione nel proprio codice.
L'argomento ( $ rs ) è un array del record da esportare. I valori sono valori di database
non formattati. Se si desidera esportare valori formattati, utilizzare $ this->
MyField-> ViewValue .

Nota Se si utilizzano i modelli personalizzati (vedere Modelli personalizzati


(clienttpt.htm) ), questo evento può essere sovrascritto. È possibile disabilitare
l'uso di modelli personalizzati per report, vedere l'esempio di Page_Load sopra.

Page_Exported Questo evento verrà chiamato dopo che la pagina è stata esportata. È possibile utilizzare
questo evento per aggiungere il codice aggiuntivo alla fine del file da esportare.

Nota Se si utilizzano i modelli personalizzati (vedere Modelli personalizzati


(clienttpt.htm) ), questo evento può essere sovrascritto. È possibile disabilitare
l'uso di modelli personalizzati per report, vedere l'esempio di Page_Load sopra.

Tabella specifica -> Pagina di anteprima

Page_Load Questo evento verrà chiamato dopo la connessione al database.

Page_Render Questo evento verrà chiamato prima dell'emissione dell'HTML per la pagina. È possibile
utilizzare questo evento per apportare alcune modifiche dell'ultimo minuto alla pagina
prima che venga emessa.

Page_Unload Questo evento verrà chiamato prima della chiusura della connessione al database.

Page_DataRendering Questo evento verrà chiamato prima che il contenuto della pagina venga emesso. Puoi
utilizzare questo evento per aggiungere contenuti nella parte superiore del contenuto
della pagina.

Page_DataRendered Questo evento verrà chiamato dopo l'uscita del contenuto della pagina. Puoi utilizzare
questo evento per aggiungere contenuti nella parte inferiore del contenuto della pagina.

Page_Redirecting Questo evento verrà chiamato prima di reindirizzare ad un'altra pagina. L'argomento
dell'evento è l'URL da reindirizzare a.

Message_Showing Questo evento viene generato prima che venga mostrato il messaggio memorizzato nella
variabile di sessione. Puoi usare questo evento per cambiare il messaggio che viene
passato all'evento come argomento.

Altro -> Pagina predefinita

Page_Load Questo evento verrà chiamato all'inizio della pagina.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 38/54
26/5/2018 Eventi server e script client

Page_Unload Questo evento verrà chiamato alla fine della pagina.

Page_Redirecting Questo evento verrà chiamato prima di reindirizzare ad un'altra pagina. L'argomento
dell'evento è l'URL da reindirizzare a.

Di default, l'utente viene reindirizzato alla pagina predefinita (ad es. Index.php) dopo il
login riuscito. Puoi cambiarlo usando questo evento.

Altro -> Pagina di accesso

Page_Load Questo evento verrà chiamato all'inizio della pagina.

Page_Render Questo evento verrà chiamato prima dell'emissione dell'HTML per la pagina. È possibile
utilizzare questo evento per apportare alcune modifiche dell'ultimo minuto alla pagina
prima che venga emessa.

Page_Unload Questo evento verrà chiamato alla fine della pagina.

Page_DataRendering Questo evento verrà chiamato dopo che header.php è incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte superiore del contenuto della pagina.

Page_DataRendered Questo evento verrà chiamato prima che il footer.php sia incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte inferiore del contenuto della pagina.

Page_Redirecting Questo evento verrà chiamato prima di reindirizzare ad un'altra pagina. L'argomento
dell'evento è l'URL da reindirizzare a.

Di default, l'utente viene reindirizzato alla pagina predefinita (ad es. Index.php) dopo il
login riuscito. Puoi cambiarlo usando questo evento.

Message_Showing Questo evento viene generato prima che venga mostrato il messaggio memorizzato nella
variabile di sessione. Puoi usare questo evento per cambiare il messaggio che viene
passato all'evento come argomento.

User_LoggingIn Questo evento verrà chiamato prima di convalidare nome utente e password.

User_LoggedIn Questo evento verrà chiamato dopo il login dell'utente.

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. Ispezionare la sorgente HTML della
pagina nel browser per visualizzare i nomi degli elementi del modulo.

Un argomento $ CustomError viene passato all'evento, è possibile aggiungere il


messaggio di errore e restituire FALSE se i valori del modulo non superano la convalida.

User_LoginError Questo evento verrà chiamato se l'utente non riesce ad accedere.

Altro -> Pagina di disconnessione

Page_Load Questo evento verrà chiamato all'inizio della pagina.

Page_Unload Questo evento verrà chiamato alla fine della pagina.

Page_Redirecting Questo evento verrà chiamato prima di reindirizzare ad un'altra pagina. L'argomento
dell'evento è l'URL da reindirizzare a.

Di default, l'utente viene reindirizzato alla pagina predefinita (ad es. Index.php) dopo il
login riuscito. Puoi cambiarlo usando questo evento.

User_LoggingOut Questo evento verrà chiamato prima del logout dell'utente.

User_LoggedOut Questo evento verrà chiamato dopo il logout dell'utente.

Altro -> Pagina di registrazione

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 39/54
26/5/2018 Eventi server e script client

Page_Load Questo evento verrà chiamato all'inizio della pagina.

Page_Render Questo evento verrà chiamato prima dell'emissione dell'HTML per la pagina. È possibile
utilizzare questo evento per apportare alcune modifiche dell'ultimo minuto alla pagina
prima che venga emessa.

Page_Unload Questo evento verrà chiamato alla fine della pagina.

Page_DataRendering Questo evento verrà chiamato dopo che header.php è incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte superiore del contenuto della pagina.

Page_DataRendered Questo evento verrà chiamato prima che il footer.php sia incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte inferiore del contenuto della pagina.

Page_Redirecting Questo evento verrà chiamato prima di reindirizzare ad un'altra pagina. L'argomento
dell'evento è l'URL da reindirizzare a.

Di default, l'utente viene reindirizzato alla pagina predefinita (ad es. Index.php) dopo il
login riuscito. Puoi cambiarlo usando questo evento.

Email_Sending Questo evento viene generato prima dell'invio della notifica via email. È possibile
personalizzare il contenuto dell'email utilizzando questo evento. L'evento Email_Sending
ha i seguenti parametri:

Email : l'istanza dell'oggetto email che contiene tutte le informazioni sull'email da


inviare. È un'istanza della classe cEmail (vedi sotto).

Arg : un array che contiene informazioni aggiuntive. Per la pagina di registrazione, è


possibile accedere al nuovo record nel tipo di dati di un recordset da $ Args ["rs"] .

Restituisci FALSE se vuoi annullare l'invio dell'e-mail.

Message_Showing Questo evento viene generato prima che venga mostrato il messaggio memorizzato nella
variabile di sessione. Puoi usare questo evento per cambiare il messaggio che viene
passato all'evento come argomento.

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. Vedere la descrizione di
Form_CustomValidate per la pagina Aggiungi / Copia sopra.

User_Registered Questo evento viene attivato dopo la corretta registrazione di un nuovo utente.
L'argomento è un recordset del nuovo record nella tabella utente.

User_Activated Questo evento viene attivato dopo l'attivazione di un nuovo utente (se è richiesta
l'attivazione da parte dell'utente, vedere Impostazioni di sicurezza (securitysetup.htm) ).
L'argomento è un recordset del nuovo record nella tabella utente.

Altro -> Cambia pagina password

Page_Load Questo evento verrà chiamato all'inizio della pagina.

Page_Render Questo evento verrà chiamato prima dell'emissione dell'HTML per la pagina. È possibile
utilizzare questo evento per apportare alcune modifiche dell'ultimo minuto alla pagina
prima che venga emessa.

Page_Unload Questo evento verrà chiamato alla fine della pagina.

Page_DataRendering Questo evento verrà chiamato dopo che header.php è incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte superiore del contenuto della pagina.

Page_DataRendered Questo evento verrà chiamato prima che il footer.php sia incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte inferiore del contenuto della pagina.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 40/54
26/5/2018 Eventi server e script client

Page_Redirecting Questo evento verrà chiamato prima di reindirizzare ad un'altra pagina. L'argomento
dell'evento è l'URL da reindirizzare a.

Di default, l'utente viene reindirizzato alla pagina predefinita (ad es. Index.php) dopo il
login riuscito. Puoi cambiarlo usando questo evento.

Email_Sending Questo evento viene generato prima dell'invio della notifica via email. È possibile
personalizzare il contenuto dell'email utilizzando questo evento. L'evento Email_Sending
ha i seguenti parametri:

Email : l'istanza dell'oggetto email che contiene tutte le informazioni sull'email da


inviare. È un'istanza della classe cEmail (vedi sotto).

Arg : un array contenente informazioni aggiuntive. Per la pagina Cambia password, i


vecchi dati dei record nel tipo di dati del recordset sono accessibili da $ Args
["rsold"] , i nuovi dati dei record nel tipo di dati del recordset sono accessibili da $
Args ["rsnew "] .

Restituisci FALSE se vuoi annullare l'invio dell'e-mail.

Message_Showing Questo evento viene generato prima che venga mostrato il messaggio memorizzato nella
variabile di sessione. Puoi usare questo evento per cambiare il messaggio che viene
passato all'evento come argomento.

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. Ispezionare la sorgente HTML della
pagina nel browser per visualizzare i nomi degli elementi del modulo.

Un argomento $ CustomError viene passato all'evento, è possibile aggiungere il


messaggio di errore e restituire FALSE se i valori del modulo non superano la convalida.

Altro -> Pagina di recupero password

Page_Load Questo evento verrà chiamato all'inizio della pagina.

Page_Render Questo evento verrà chiamato prima dell'emissione dell'HTML per la pagina. È possibile
utilizzare questo evento per apportare alcune modifiche dell'ultimo minuto alla pagina
prima che venga emessa.

Page_Unload Questo evento verrà chiamato alla fine della pagina.

Page_DataRendering Questo evento verrà chiamato dopo che header.php è incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte superiore del contenuto della pagina.

Page_DataRendered Questo evento verrà chiamato prima che il footer.php sia incluso. Puoi utilizzare questo
evento per aggiungere contenuti nella parte inferiore del contenuto della pagina.

Page_Redirecting Questo evento verrà chiamato prima di reindirizzare ad un'altra pagina. L'argomento
dell'evento è l'URL da reindirizzare a.

Di default, l'utente viene reindirizzato alla pagina di accesso dopo aver effettuato il login
con successo. Puoi cambiarlo usando questo evento.

Email_Sending Questo evento viene generato prima dell'invio della notifica via email. È possibile
personalizzare il contenuto dell'email utilizzando questo evento. L'evento Email_Sending
ha i seguenti parametri:

Email : l'istanza dell'oggetto email che contiene tutte le informazioni sull'email da


inviare. È un'istanza della classe cEmail (vedi sotto).

Arg : un array contenente informazioni aggiuntive. Per la pagina Recupero password, è


possibile accedere ai vecchi dati dei record nel tipo di dati del recordset da $ Args
["rs"] .

Restituisci FALSE se vuoi annullare l'invio dell'e-mail.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 41/54
26/5/2018 Eventi server e script client

Message_Showing Questo evento viene generato prima che venga mostrato il messaggio memorizzato nella
variabile di sessione. Puoi usare questo evento per cambiare il messaggio che viene
passato all'evento come argomento.

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. Ispezionare la sorgente HTML della
pagina nel browser per visualizzare i nomi degli elementi del modulo.

Un argomento $ CustomError viene passato all'evento, è possibile aggiungere il


messaggio di errore e restituire FALSE se i valori del modulo non superano la convalida.

User_RecoverPassword Questo evento viene generato dopo il recupero della password. L'argomento è un
recordset del record dell'utente nella tabella utente.

Script del cliente


In generale, ogni pagina ha due blocchi di JavaScript:

Client Script : il primo blocco di JavaScript da includere all'inizio della pagina, puoi inserire le tue variabili e funzioni
JavaScript lì. Il tag View (per la visualizzazione) e Edit Tag (per l'input) dei campi supporta gli attributi personalizzati
(vedi Field Setup (fieldsetup.htm) ) in modo che tu possa aggiungere i tuoi attributi per lavorare con il tuo JavaScript
incluso qui.

Startup Script - il secondo blocco di JavaScript da includere alla fine della pagina, puoi inserire qui il codice per
"avviare" il tuo JavaScript.

Nota Nella tabella seguente, il <fieldname> nel codice rappresenta il nome della variabile di campo. In generale,
se il nome del campo è alfanumerico, il nome della variabile di campo è uguale al nome del campo. Altrimenti, gli
spazi vengono sostituiti da caratteri di sottolineatura e altri caratteri non alfanumerici vengono sostituiti dalla loro
rappresentazione in forma esadecimale del loro valore unicode. Se la variabile è una parola riservata o inizia con
una cifra, verrà anteposta con un carattere di sottolineatura. In caso di dubbi, controlla sempre l'origine HTML
nel browser per verificare l'ID, il nome e altri attributi degli elementi effettivi.

Globale -> Pagine con intestazione / piè di pagina

Script del cliente Lo script verrà inserito nell'intestazione e quindi incluso in tutte le pagine con l'intestazione.

Nota Questo evento NON è correlato all'impostazione Nessun intestazione / piè di


pagina nel modulo Genera (vedi Genera impostazioni (generatesetup.htm) ). Anche se
No header / footer è abilitato, anche questo evento verrà attivato.

Esempio

Imposta div.content-wrapper e footer min-width se l'impostazione avanzata "Reimposta


l'altezza del layout" (vedi Impostazioni avanzate (tools.htm#custom) ) è disabilitata

$ (document) .on ( evento "overflow", funzione (e, $ form) { //


"overflow"
(attivato se il contenuto è più ampio dello schermo) if
(EW_IS_SCREEN_SM_MIN) // Non mobile $ (". content-wrapper, footer ")
.css (" min-width "," 900px "); // Imposta min-width });

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 42/54
26/5/2018 Eventi server e script client

Script di avvio Lo script verrà inserito nel piè di pagina e quindi incluso in tutte le pagine con il piè di
pagina. Questo è un evento molto utile che viene attivato per tutte le pagine con il piè di
pagina, puoi quasi fare tutto cambiando il DOM del documento.

Nota Questo evento NON è correlato all'impostazione Nessun intestazione / piè di


pagina nel modulo Genera (vedi Genera impostazioni (generatesetup.htm) ). Anche se
No header / footer è abilitato, anche questo evento verrà attivato.

Esempio

Abilita la mini barra laterale di AdminLTE

$ ( "corpo") addClass ( "sidebar-mini."); // Abilita mini barra


laterale
$ (". Logo-mini"). Html ("<strong> <em> P </ em> </ strong>"); //
Imposta il mini logo

Codice globale Codice JavaScript da includere in tutte le pagine con intestazione. Questo può contenere
costanti, variabili e funzioni globali.

Tabella specifica -> Aggiungi / Copia pagina

Script del cliente Lo script verrà posizionato dopo l'intestazione. Questo potrebbe contenere le tue variabili
JavaScript e le funzioni per la pagina. Puoi anche utilizzare questo evento per sottoscrivere
eventi JavaScript.

Esempio 1

Set multi-pagina (vedi Table Setup) (tablesetup.htm) proprietà

CurrentForm.MultiPage.Set ({
// LastPageSubmit: true, // Abilita pulsante di invio solo per
l'ultima pagina
// HideDisabledButton: true, // Nascondi pulsante di invio
disattivato
// HideInactivePages: true, // Nascondi pagine inattive
// HideTabs: true, // Nascondi tutte le schede
// ShowPagerBottom: true, // Mostra il pager in basso
// PagerTemplate: '<nav> <ul class = "cercapersone"> <li class =
"ewPrev precedente"> <a href = "# "> <span class =" icon-prev "> </
span> {prec} </a> </ li> <li class =" next ewNext "> <a href="#">
{successivo} <span class = "icona-next"> </ span> </a> </ li> </ ul>
</ nav>'
// Modello di cercapersone LockTabs: true, // Imposta le schede
non attive come disabilitate
ShowPagerTop: true // Mostra il cercapersone in cima
});

Nota L'argomento del metodo Set () è un oggetto JavaScript, se si modifica l'esempio


precedente, assicurarsi che la sintassi sia corretta e che l'ultimo valore della proprietà
non abbia una virgola finale.

Esempio 2

Sottoscrivi l' evento jQuery ajaxSend (http://api.jquery.com/ajaxSend/) prima che venga


inviata una richiesta Ajax (ad esempio "updateoption", "autosuggest", "autofill")

$ (document) .ajaxSend (function (event, jqxhr, settings) {


var data = settings.data; //console.log(data); // Decommenta
per visualizzare i dati nella console del browser if (ew_Get ("ajax",
data ) == "updateoption" && ew_Get ("nome", data) == "x_MyField") //
Elenco di selezione Ajax settings.data = data.replace ("xxx", "yyy");
// Sostituisci i dati con dati personalizzati });

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 43/54
26/5/2018 Eventi server e script client

Esempio 3

Sottoscrivi l'evento "updatedone" per le liste di selezione dinamiche (dynamicselect.htm) .


L'evento si attiva dopo l'aggiornamento delle opzioni di un campo figlio.

$ (document) .on ("updatedone", function (e, args) {


//console.log(args); // Rimuovi commento per visualizzare gli
argomenti
nell'avviso della console del browser ($ (args.target) .data
("campo ") +" è stato aggiornato. ");
});

Esempio 4

Sottoscrivi l'evento "create.editor" per il campo denominato "MyField" per modificare la


configurazione degli editor HTML. L'evento si attiva prima che venga creato l'editor HTML.

$ (document) .on ("create.editor", function (e, args) {


//console.log(args); // Rimuovi il commento per visualizzare gli
argomenti nella console del browser
if (args.name == "x_MyField")
args.settings.height = "300px"; // Fare riferimento al
documento dell'editor HTML per i dettagli sulle impostazioni
});

Script di avvio La sceneggiatura verrà posizionata prima del piè di pagina. Questo è un evento molto utile
che puoi quasi fare tutto cambiando il DOM del documento.

PHPMaker fornisce un plugin jQuery .fields () per ottenere facilmente / impostare i


valori del modulo negli eventi lato client come Startup Script e Form_CustomValidate
(vedi sotto)

$ row = $ (this) .fields (); // restituisce un oggetto di tutti i


campi, ogni proprietà è un oggetto jQuery degli elementi di input di
un campo
$ field = $ row ["<fieldname>"]; // ottiene l'oggetto jQuery degli
elementi di input di un campo

Puoi anche ottenere direttamente l'oggetto jQuery per un campo,

$ field = $ (this) .fields ("<fieldname>"); // restituisce l'oggetto


jQuery degli elementi di input di un campo

L'oggetto jQuery del campo è l'oggetto jQuery dell'elemento di input del campo. (Si noti che
se Modifica tag del campo è CHECKBOX o RADIO, l'oggetto jQuery può contenere più di un
elemento.)

Ad esempio, se la pagina è una pagina Modifica e il campo è denominato "Campo1" ed è una


casella di testo, $ (this) .fields ("Campo1") è equivalente a $ ("# xField1") . I
vantaggi dell'uso del plugin .fields () è che l'oggetto jQuery restituito ha i seguenti
metodi aggiuntivi:

.value .value () ottiene il valore del campo, .value (valore) imposta il valore del
([valore]) campo.

Nota Questo metodo NON è uguale al metodo .val () di jQuery. Questo


metodo prende in considerazione altre funzionalità (ad esempio editor
HTML, AutoSuggest).

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 44/54
26/5/2018 Eventi server e script client

.Visible .visible () ottiene la visibilità del campo, .visible (valore) imposta la visibilità
([valore]) del campo. Il valore dovrebbe essere un valore booleano.

Nota
1. Questo metodo mostra / nasconde la riga del campo (cioè
<tr> o <div>), NON solo gli elementi di input del campo stesso
nella pagina Aggiungi / Modifica.
2. Il setter NON è lo stesso del metodo .toggle () di jQuery.

.readonly Ottieni / Imposta l' attributo readonly dell'elemento di input. Il valore


(valore) dovrebbe essere un valore booleano.

Nota Per <input type = "text"> e <textarea> solo.

.disabled Ottieni / Imposta l' attributo disabilitato dell'elemento di input. Il valore


(valore) dovrebbe essere un valore booleano.

Nota Il valore di un controllo disabilitato NON viene inviato con il


modulo. Usare questo attentamente nella pagina Aggiungi / Modifica o
il campo potrebbe essere aggiornato con un valore vuoto.

.riga() Ottieni l'oggetto jQuery della riga (<tr> o <div>) del campo.

Gli appunti
1. Se aggiungi / modifica la pagina, la riga è <tr> o <div> del
campo.
2. Se la pagina Grid, la riga è il <tr> del record.

.toNumber Ottieni il valore di input come numero JavaScript (per impostazione


() predefinita il valore di input è stringa).

.ad oggi() Ottieni il valore di input come oggetto momento (http://momentjs.com/)


(per impostazione predefinita il valore di input è stringa).

.toJsDate Ottieni il valore di input come oggetto Date JavaScript (per impostazione
() predefinita il valore di input è stringa).

Esempio 1

Aggiungi evento onchange al campo denominato "Field1" nella pagina Aggiungi / Modifica
per modificare altri campi mediante il plugin jQuery .fields ()

$ ("input [nome = 'x_Field1']"). change (function () { // Assume


Field1 è un input di testo
if (this.value == "xxx") {
$ (this) .fields ("FieldA" ) .value ("yyy"); // Imposta valore
su FieldA
} else {
$ (this) .fields ("FieldB"). value ("zzz"); // Imposta valore
su FieldB
}
});

Esempio 2

Aggiungi evento onclick al campo denominato "Campo2" che utilizza CHECKBOX come
Modifica tag.
http://www.hkvstore.com/phpmaker/doc/customscripts.htm 45/54
26/5/2018 Eventi server e script client

$ ("input [nome = 'x_Field2 []']"). click (function () { // Field2 ha


più input (checkboxes) quindi dovrebbero essere selezionati per nome
if (this.checked) { // Se selezionato
/ / Fai qualcosa
} else { // Not checked
// Fai qualcos'altro
}
});

Esempio 3

Aggiungi evento onchange al campo denominato "Field1" nella pagina Grid-Aggiungi /


Modifica per modificare altri campi con il plugin jQuery .fields ()

$ ("input [data-field = 'x_Field3']"). change (function () { // Field1


ha più input in Grid-Add / Edit quindi dovrebbero essere selezionati
dall'attributo del campo dati
if (this.value = = "xxx") {
$ (this) .fields ("FieldA"). value ("yyy"); // Imposta valore
su FieldA nella stessa riga
} else {
$ (this) .fields ("FieldB"). value ("zzz"); // Imposta valore
su FieldB nella stessa riga
}
});

Esempio 4

Attiva / disattiva la visibilità di una pagina in Multi-Page (vedi Impostazione tabella)


(tablesetup.htm)

$ (function () {
CurrentForm.MultiPage.TogglePage (2, false); // Hide the 2nd page
});

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 46/54
26/5/2018 Eventi server e script client

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. Nota: questa funzione è un membro della
classe di pagine JavaScript.

Restituisce false se i valori del modulo non superano la convalida.

Nota Se si utilizza questo evento lato client, assicurarsi di aver abilitato la convalida
sul lato client, vedere Convalida in Impostazioni PHP (phpsetup.htm) .

L'oggetto modulo HTML è accessibile dal parametro fobj . Puoi anche usare il plugin jQuery
.fields () in questo evento.

Esempio 1

Assicurati che un valore di campo intero soddisfi un determinato requisito

function (fobj) { // NON MODIFICARE QUESTA LINEA!


var $ qty = $ (this) .fields ("Qty"); // Ottieni un campo come
oggetto jQuery per nome campo
if ($ qty.toNumber ()% 10! = 0) // Assume Qty è una casella di
testo restituisce this.OnError ($ qty, "La quantità dell'ordine deve
essere moltiplicata di 10." ); // Restituisce false se return non
valido true; // Restituisce vero se valido }

Esempio 2

Confronta 2 campi data

function (fobj) { // NON MODIFICARE QUESTA LINEA!


var $ row = $ (this) .fields (); // Ottieni tutti i campi
if ($ row ["Start"]. ToJsDate ()> $ row ["End"]. ToJsDate ()) //
Assume che Start e End sono caselle di testo restituiscono
this.OnError ($ row ["End" ], "La data di fine deve essere successiva
alla data di inizio."); // Restituisce false se return non valido
true; // Restituisce vero se valido }

Esempio 3

Manipolazione dei campi data

function (fobj) { // NON MODIFICARE QUESTA LINEA!


var $ start = $ (this) .fields ("Start"), $ end = $ (this) .fields
("End"); // Ottieni campi come oggetti jQuery in base ai nomi dei
campi
if ($ start.toDate (). Add (7, "days"). IsAfter ($ end.toDate ()))
// Presuppone Start e End sono caselle di testo restituiscono
this.OnError ($ end, "La data di fine deve essere di almeno 7 giorni
dopo la data di inizio."); // Restituisce false se return non
valido true; // Restituisce vero se valido }

Tabella specifica -> Elimina pagina

Script del cliente Lo script verrà posizionato dopo l'intestazione.

Script di avvio La sceneggiatura verrà posizionata prima del piè di pagina.

Tabella specifica -> Modifica pagina

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 47/54
26/5/2018 Eventi server e script client

Script del cliente Lo script verrà posizionato dopo l'intestazione.

Script di avvio La sceneggiatura verrà posizionata prima del piè di pagina.

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. L'oggetto modulo è accessibile dal
parametro fobj . Restituisce false se i valori del modulo non superano la convalida.

Tabella specifica -> Pagina elenco

Script del cliente Lo script verrà posizionato dopo l'intestazione.

Script di avvio La sceneggiatura verrà posizionata prima del piè di pagina.

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. Restituisce false se i valori del modulo non
superano la convalida.

L'oggetto modulo è accessibile dal parametro fobj .

Si noti che i nomi degli elementi del modulo sono diversi in modalità Inline Aggiungi / Copia
/ Modifica o Griglia-Aggiungi / Modifica della pagina Elenco. Sono denominati "x0_ <nome
campo>" in Inline-Aggiungi / Copia, come "x1_ <nome campo>" in modalità Inline-Edit e
come "x1_ <nome campo>", "x2_ <nome campo>", ecc. In Grid -Aggiunta / Modifica
poiché ci sono più righe. Ispezionare gli elementi nel browser per verificare i nomi effettivi
degli elementi del modulo.

Nota Form_CustomValidate viene generato per OGNI riga nella griglia. Puoi anche
usare il plugin jQuery .fields () (vedi sopra) per manipolare i campi, ma ricorda
che i campi di ritorno del plug-in della sola riga CORRENTE. Se è necessario accedere
ai campi in altre righe, utilizzare fobj.elements o jQuery con i selettori CSS.

Tabella specifica -> Pagina di aggiornamento multiplo

Script del cliente Lo script verrà posizionato dopo l'intestazione.

Script di avvio La sceneggiatura verrà posizionata prima del piè di pagina.

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. L'oggetto modulo è accessibile dal
parametro fobj . Restituisce false se i valori del modulo non superano la convalida.

Tabella specifica -> Pagina rapporto

Script del cliente Lo script verrà posizionato dopo l'intestazione.

Script di avvio La sceneggiatura verrà posizionata prima del piè di pagina.

Tabella specifica -> Pagina di ricerca

Script del cliente Lo script verrà posizionato dopo l'intestazione.

Script di avvio La sceneggiatura verrà posizionata prima del piè di pagina.

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. L'oggetto modulo è accessibile dal
parametro fobj . Restituisce false se i valori del modulo non superano la convalida.

Tabella specifica -> Visualizza pagina

Script del cliente Lo script verrà posizionato dopo l'intestazione.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 48/54
26/5/2018 Eventi server e script client

Script di avvio La sceneggiatura verrà posizionata prima del piè di pagina.

Altro -> Pagina di accesso

Script del cliente Lo script verrà posizionato dopo l'intestazione.

Script di avvio La sceneggiatura verrà posizionata prima del piè di pagina.

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. L'oggetto modulo è accessibile dal
parametro fobj . Restituisce false se i valori del modulo non superano la convalida.

Altro -> Pagina di registrazione

Script del cliente Lo script verrà posizionato dopo l'intestazione.

Script di avvio La sceneggiatura verrà posizionata prima del piè di pagina.

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. L'oggetto modulo è accessibile dal
parametro fobj . Restituisce false se i valori del modulo non superano la convalida.

Altro -> Cambia pagina password

Script del cliente Lo script verrà posizionato dopo l'intestazione.

Script di avvio La sceneggiatura verrà posizionata prima del piè di pagina.

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. L'oggetto modulo è accessibile dal
parametro fobj . Restituisce false se i valori del modulo non superano la convalida.

Altro -> Pagina di recupero password

Script del cliente Lo script verrà posizionato dopo l'intestazione.

Script di avvio La sceneggiatura verrà posizionata prima del piè di pagina.

Form_CustomValidate Questo evento viene attivato dopo la normale convalida del modulo. Puoi usare questo
evento per fare la tua convalida personalizzata. L'oggetto modulo è accessibile dal
parametro fobj . Restituisce false se i valori del modulo non superano la convalida.

Nota Si consiglia di sviluppare gli eventi server e gli script client nello script generato in modo da poterli
modificare e testare immediatamente. Al termine dello script personalizzato, copialo nell'editor di script
personalizzato PHPMaker e salvalo.

Oggetti nel codice generato da PHPMaker


I seguenti oggetti sono disponibili nel codice generato e puoi usarli negli Eventi server per aggiungere più potenza al
codice. Gli oggetti più importanti sono:

Oggetto pagina
L'oggetto Pagina è generato per la maggior parte delle pagine. È possibile accedere alle proprietà dell'oggetto utilizzando
la -> notazione (ad esempio, CurrentPage () -> PageID ). La classe di pagina eredita dalla classe della tabella
generata per ogni tabella. I metodi e le proprietà della classe di pagina variano a seconda della pagina, per l'elenco
completo di metodi e proprietà, fare riferimento alla classe di pagina generata negli script generati e alla classe "c
<Tabella>" (ad esempio cCars) nel file generato " <Table> info.php".

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 49/54
26/5/2018 Eventi server e script client

Campo Oggetto
Un oggetto <Campo> viene generato per ogni campo in una tabella. Ad esempio, l'oggetto "Trademark" viene generato
per il campo "Trademark" nella tabella "Auto". È possibile accedere alle proprietà dell'oggetto utilizzando la -> notazione
(ad es. CurrentPage () -> Marchi-> Valore corrente ). Per l'elenco completo di metodi e proprietà, fare
riferimento alla classe "cField" nel file generato "phpfn * .php".

Oggetto di sicurezza
L'oggetto di sicurezza viene utilizzato per memorizzare le attuali impostazioni di sicurezza avanzata. Fare riferimento alla
classe "cAdvancedSecurity" nel file generato "phpfn * .php" per l'elenco completo di metodi e proprietà.

Oggetto di posta elettronica


L'oggetto di posta elettronica contiene le informazioni richieste per l'e-mail da inviare, l'istanza dell'oggetto verrà passata
agli eventi di Email_Sending come argomento e consentirà di modificare l'e-mail. Si prega di fare riferimento alla classe
"cEmail" nel file generato "phpfn * .php" per l'elenco completo di metodi e proprietà.

Oggetto Menu
L'oggetto Menu contiene tutte le informazioni di un menu, l'istanza del menu verrà passata agli eventi Menu_Rendering
come argomento e ti consentirà di lavorare con il menu. Fare riferimento alla classe "cMenu" nel file generato "ewshared
* .php" per l'elenco completo di metodi e proprietà.

Oggetto MenuItem
L'oggetto MenuItem contiene tutte le informazioni della voce di menu, l'istanza della voce di menu verrà passata alla
voce MenuItem_Adding come argomento e consentirà di lavorare con la voce di menu. Fare riferimento alla classe
"cMenuItem" nel file generato "ewshared * .php" per l'elenco completo di metodi e proprietà.

Oggetto ListOpions
L'oggetto ListOptions contiene tutte le informazioni delle colonne non di dati nella tabella principale della pagina Elenco.
Fare riferimento alla classe "cListOptions" nel file generato "phpfn * .php" per l'elenco completo di metodi e proprietà.

Oggetto ExportOpions
L'oggetto ExportOptions contiene tutte le informazioni dei collegamenti di esportazione nella pagina Elenco. È anche
un'istanza della classe "cListOptions". Fare riferimento alla classe "cListOptions" nel file generato "phpfn * .php" per
l'elenco completo di metodi e proprietà.

Language Object
La lingua Object consente di recuperare una frase della lingua attiva durante il runtime. La frase può essere recuperata
negli script generati usando metodi come Phrase, TablePhrase e FieldPhrase. Fare riferimento alla classe "cLanguage" nel
file generato "ewshared * .php" per l'elenco completo di metodi e proprietà.

Oggetto
breadcrumb L'oggetto breadcrumb contiene tutte le informazioni del breadcrumb nella parte superiore della pagina. Fare
riferimento alla classe "cBreadcrumb" nel file generato "phpfn * .php" per l'elenco completo di metodi e proprietà.

Ci sono altri oggetti nel codice generato, fare riferimento al codice sorgente del file "phpfn * .php" e "ewshared * .php"
nel modello o negli script generati.

Alcune funzioni globali


Di seguito sono riportate alcune utili funzioni globali disponibili nel codice generato per consentire di ottenere
informazioni più facilmente negli eventi del server:

Gli appunti
1. Nella tabella seguente, l'argomento $ dbname o $ tablename o $ fieldname è il nome della variabile del
database / tabella / campo . È case-sensitive. In generale, se il nome è alfanumerico, il nome della variabile
è uguale al nome. Altrimenti, gli spazi vengono sostituiti da caratteri di sottolineatura e altri caratteri non
alfanumerici vengono sostituiti dalla loro rappresentazione in forma esadecimale del loro valore unicode. Se
la variabile è una parola riservata, verrà anteposta con un carattere di sottolineatura. Se si utilizzano
database con lo stesso nome, controllare il nome della variabile del database nel modulo Aggiungi tabella
collegata , vedere Tabelle collegate (customscripts.htm) .
2. Se MS Access, $ dbname è il nome del file del database senza l'estensione. Se Oracle, $ dbname è il nome
dello schema.
3. L'argomento tra parentesi quadre indica che l'argomento è facoltativo.
4. Se $ dbname non è specificato, si presume il database del progetto. Se $ dbname è specificato, viene
utilizzato il database specificato delle tabelle collegate.

Funzione Descrizione Esempio

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 50/54
26/5/2018 Eventi server e script client

Conn ([$ dbname]) Ottieni l'oggetto di $ rs = Conn () ->


connessione globale. Esegui ("SELEZIONA
Se $ dbname non è ..."); // esegue
specificato, restituisce un'istruzione
l'oggetto di connessione SELECT e ottiene
per il database del l'oggetto
progetto. Se $ dbname è recordset
specificato, restituisce
l'oggetto di connessione $ rs = Conn
per il database specificato ("MyDbName") ->
di una tabella collegata. Esegui ("SELEZIONA
..."); // esegue
un'istruzione
SELECT e ottiene
l'oggetto
recordset

Sicurezza() Ottieni l'oggetto di if (Security () ->


sicurezza globale CanEdit ()) { //
controlla se
l'utente corrente
ha
l'autorizzazione
di modifica per la
tabella corrente
(da utilizzare con
User Level
Security
... il tuo
codice ...
}

Linguaggio() Ottieni l'oggetto Language () ->


linguaggio globale setPhrase
("AddLink",
"xxx"); // cambia
la dicitura per il
collegamento
"Aggiungi"

Profilo() Ottieni l'oggetto profilo Profile () -> Set


utente globale ("xxx", "yyy"); //
imposta un valore
Profile () -> Save
(); // salva in
sessione
Profile () -> Get
("xxx"); //
ottiene il valore
in altre pagine

CURRENTUSERNAME () Ottieni il nome utente $ username =


corrente. CurrentUserName
();

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 51/54
26/5/2018 Eventi server e script client

CurrentUserID () Da utilizzare con la $ userid =


sicurezza ID utente CurrentUserID ();
(consultare Impostazioni
di sicurezza
(securitysetup.htm) ).
Ottieni l'ID utente
corrente.

CurrentUserLevel () Per l'utilizzo con Sicurezza $ levelid =


a livello utente CurrentUserLevel
(consultare Impostazioni ();
di sicurezza
(securitysetup.htm) ).
Ottieni l'ID livello utente
dell'utente corrente
(intero). (Nota: NON il
permesso dell'utente
corrente come numero
intero).

CurrentUserInfo ($ fieldname) Per l'uso con sicurezza $ email =


avanzata (vedere CurrentUserInfo
Impostazioni di sicurezza ("email");
(securitysetup.htm) ).
Ottieni le informazioni
attuali dell'utente dalla
tabella utente.
L'argomento è il nome del
campo nella tabella
utente.

CurrentPageID () Ottieni l'ID della pagina if (CurrentPageID


corrente. Un ID pagina () == "aggiungi")
identifica il tipo di pagina, {
può essere "elenco",
... il tuo
"visualizza", "aggiungi",
codice ...
"modifica", "elimina",
}
"cerca", ecc.

Pagina corrente() Ottieni l'oggetto della $ rowindex =


pagina corrente. CurrentPage () ->
RowCnt;

CurrentLanguageID () Ottieni l'ID lingua $ langid =


corrente. CurrentLanguageID
();

Pagina ([$ tablename]) Ottieni l'oggetto pagina di $ value = Page


un'altra tabella nella ("MyMasterTable")
pagina, ad esempio -> MyField->
l'oggetto pagina della
CurrentValue;
tabella principale o della
tabella dettagli. Se $
tablename non è
specificato, restituisce
CurrentPage () .

IsLoggedIn () Per l'uso con sicurezza if (IsLoggedIn ())


avanzata (vedere {
Impostazioni di sicurezza ... your code
(securitysetup.htm) ).
...
Ottieni lo stato di accesso
}
dell'utente corrente.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 52/54
26/5/2018 Eventi server e script client

IsAdmin () Per l'uso con sicurezza if (IsAdmin ()) {


avanzata (vedere ... il tuo
Impostazioni di sicurezza codice ...
(securitysetup.htm) ).
}
Controlla se l'utente
corrente è un
amministratore.

IsExport ($ format) Controlla se la pagina sta if (IsExport


esportando i dati. ("print")) {
... your code
...
}

ew_Execute ($ sql [, $ dbname]) Esegui istruzioni UPDATE, ew_Execute


INSERT o DELETE. ("UPDATE MyTable
SET ... WHERE
...");

ew_ExecuteRow ($ sql [, $ dbname]) Esegue la query e $ row =


restituisce la prima riga ew_ExecuteRow
come matrice. ("SELECT * FROM
MyTable WHERE
...");

ew_ExecuteRows ($ sql [, $ dbname]) Esegue la query e $ rows =


restituisce le righe come ew_ExecuteRows
una matrice. ("SELECT * FROM
MyTable WHERE
...");

ew_ExecuteScalar ($ sql [, $ dbname]) Esegue la query e $ value =


restituisce la prima ew_ExecuteScalar
colonna della prima riga. ("SELEZIONA
MyField FROM
MyTable WHERE
...");

ew_ExecuteHtml ($ sql [, $ options] [, $ dbname]) Esegue la query e $ html =


restituisce i dati come ew_ExecuteHtml
tabella HTML. Vedi il ("SELECT * FROM
codice sorgente per le
MyTable WHERE
opzioni.
...");

ew_ExecuteJson ($ sql [, $ options] [, $ dbname]) Esegue la query e $ json =


restituisce i dati come ew_ExecuteJson
JSON. Vedi il codice ("SELECT * FROM
sorgente per le opzioni.
MyTable WHERE
...");

DBHelper ([$ dbname]) Ottieni l'oggetto helper $ db = DbHelper


del database di un ();
database (vedi anche File
personalizzati
(customfile.htm) ).

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 53/54
26/5/2018 Eventi server e script client

ew_SetClientVar ($ nome, $ valore) Passare i dati lato server ew_SetClientVar


sul lato client come una ("myName",
proprietà dell'oggetto "myValue"); // PHP
ewVar . (lato server)
var myValue =
ewVar.myValue; //
JavaScript (lato
client)

Ci sono molte altre funzioni utili nel codice generato, fare riferimento al codice sorgente del file "phpfn * .php" e
"ewshared * .php" nel modello o negli script generati.

© 2002-2018 e.World Technology Ltd. Tutti i diritti riservati.

http://www.hkvstore.com/phpmaker/doc/customscripts.htm 54/54