{"elements":[{"id":7003,"title":"Architettura","body":"<section class=\"da-section\">\n  <div class=\"container\">\n    <h2>Pattern MVC Dinamico<\/h2>\n    <p class=\"lead\">Comprendere l&rsquo;architettura di DressAPI &egrave; il primo passo per sfruttarne al meglio le potenzialit&agrave;. Il framework adotta il pattern MVC con una particolarit&agrave; importante: il Model non richiede codice, perch&eacute; la struttura del database viene letta dinamicamente dai metadati del DBMS. In questa sezione esploriamo come i diversi componenti collaborano per trasformare una richiesta HTTP in una risposta completa.<\/p>\n\n    <h3 class=\"mt-5\">Flusso di una richiesta<\/h3>\n    <div class=\"da-snippet\">\n      <div class=\"da-snippet-label\">Request Flow<\/div>\n<b>Modalit&agrave; REST (JSON\/XML)<\/b>\n\nRichiesta HTTP\n  &rarr; index.php (entry point)\n    &rarr; CRequest (parsing URL, sessione, formato)\n    &rarr; CUser (autenticazione JWT o sessione)\n    &rarr; C{plugin}Controller (routing CRUD)\n          &rarr; C{plugin}Model (operazioni DB dinamiche)\n          &rarr; CResponse (output JSON\/XML\/TEXT)\n              &rarr; CComponent (rendering componenti, con \/rendered\/true)\n\n<b>Modalit&agrave; CMS (HTML)<\/b>\n\nRichiesta HTTP\n  &rarr; index.php (entry point)\n    &rarr; CRequest (parsing URL, sessione, formato)\n    &rarr; CUser (autenticazione JWT o sessione)\n    &rarr; C{plugin}Controller (routing CRUD)\n          &rarr; C{plugin}Model (operazioni DB dinamiche)\n          &rarr; CHtmlResponse (output HTML)\n              &rarr; CMenuBuilder (costruzione menu)\n              &rarr; CHtmlView (gestione template)\n                  &rarr; CHtmlRender (template engine)\n                  &rarr; CComponent (rendering componenti UI)\n    <\/div>\n\n    <h3 class=\"mt-5\">Classi chiave<\/h3>\n    <div class=\"table-responsive\">\n      <table class=\"table table-striped\">\n        <thead class=\"table-dark\">\n          <tr><th>Classe<\/th><th>File<\/th><th>Ruolo<\/th><\/tr>\n        <\/thead>\n        <tbody>\n          <tr><td><code>CRequest<\/code><\/td><td>core\/src\/request\/<\/td><td>Parsing URL, parametri, sessione<\/td><\/tr>\n          <tr><td><code>CUser<\/code><\/td><td>core\/src\/user\/<\/td><td>Autenticazione JWT, login\/logout<\/td><\/tr>\n          <tr><td><code>CBaseController<\/code><\/td><td>core\/src\/modules\/base\/controller\/<\/td><td>Routing CRUD base<\/td><\/tr>\n          <tr><td><code>CBaseModel<\/code><\/td><td>core\/src\/modules\/base\/model\/<\/td><td>Operazioni DB, validazione, relazioni<\/td><\/tr>\n          <tr><td><code>CResponse<\/code><\/td><td>core\/src\/response\/<\/td><td>Output multi-formato (JSON\/XML\/TEXT)<\/td><\/tr>\n          <tr><td><code>CHtmlResponse<\/code><\/td><td>core\/src\/response\/<\/td><td>Estende CResponse con output HTML<\/td><\/tr>\n          <tr><td><code>CHtmlView<\/code><\/td><td>core\/src\/response\/<\/td><td>Gestione template e pagine HTML<\/td><\/tr>\n          <tr><td><code>CHtmlRender<\/code><\/td><td>core\/src\/response\/<\/td><td>Template engine<\/td><\/tr>\n          <tr><td><code>CComponent<\/code><\/td><td>core\/src\/response\/<\/td><td>Rendering componenti UI<\/td><\/tr>\n          <tr><td><code>CMenuBuilder<\/code><\/td><td>core\/src\/response\/<\/td><td>Costruzione menu navigazione<\/td><\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n\n    <h3 class=\"mt-5\">Struttura directory<\/h3>\n    <div class=\"da-snippet\">\n      <div class=\"da-snippet-label\">Directory Structure<\/div>\ncore\/                <span class=\"cm\"># Librerie condivise (NON modificare)<\/span>\n  src\/\n    request\/         <span class=\"cm\"># Gestione richieste HTTP<\/span>\n    response\/        <span class=\"cm\"># Risposte e rendering<\/span>\n    user\/            <span class=\"cm\"># Autenticazione e sessioni<\/span>\n    dbms\/            <span class=\"cm\"># Astrazione database multi-DBMS<\/span>\n    cache\/           <span class=\"cm\"># Cache (File, Redis)<\/span>\n    logger\/          <span class=\"cm\"># Sistema logging<\/span>\n    mail\/            <span class=\"cm\"># Gestione email<\/span>\n    modules\/         <span class=\"cm\"># Moduli base del framework<\/span>\n    services\/        <span class=\"cm\"># Servizi condivisi (traduzioni, utility)<\/span>\n    api\/             <span class=\"cm\"># API built-in (gallery, components)<\/span>\n    assets\/          <span class=\"cm\"># Editor WYSIWYG<\/span>\n    <\/div>\n\n    <h3 class=\"mt-5\">Moduli core disponibili<\/h3>\n    <div class=\"table-responsive\">\n      <table class=\"table table-striped\">\n        <thead class=\"table-dark\">\n          <tr><th>Modulo<\/th><th>Descrizione<\/th><\/tr>\n        <\/thead>\n        <tbody>\n          <tr><td><code>base<\/code><\/td><td>Controller e Model base, ereditati da tutti<\/td><\/tr>\n          <tr><td><code>admin<\/code><\/td><td>Gestione diretta tabelle DB (CRUD universale)<\/td><\/tr>\n          <tr><td><code>sign<\/code><\/td><td>Login, logout, registrazione<\/td><\/tr>\n          <tr><td><code>pages<\/code><\/td><td>Gestione pagine CMS<\/td><\/tr>\n          <tr><td><code>menu<\/code><\/td><td>Gestione menu con drag-and-drop<\/td><\/tr>\n          <tr><td><code>scheduler<\/code><\/td><td>Task programmati (cron-like)<\/td><\/tr>\n          <tr><td><code>translator<\/code><\/td><td>Sistema traduzioni multilingua<\/td><\/tr>\n          <tr><td><code>repository<\/code><\/td><td>Gestione file e documenti<\/td><\/tr>\n          <tr><td><code>info<\/code><\/td><td>Informazioni moduli disponibili<\/td><\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"da-section text-center\">\n  <a href=\"\/tutorials\" class=\"btn btn-outline-primary\">&larr; Torna ai Tutorial<\/a>\n<\/section>","description":"Pattern MVC dinamico e struttura del framework DressAPI","meta_keywords":"","visible":"yes","status":"public","creation_date":"0000-00-00","id__user":1,"priority":0,"groupname":"TUTORIAL"}],"module":"pages","permissions":{"can_read":true},"main_item_title":"title","related_tables":[{"name":"Newsonpage","module":"newsonpage","FK":"id_cmspage","permissions":[]}],"page_info":{"table":"","key":"id","url":"\/pages","url_list":"\/pages","filters":{"id":["=","7003"]},"pagination":{"total_items":23,"page":1,"total_pages":2,"step":1,"items_per_page":20,"url_prev":"\/pages","url_next":"\/pages\/p\/2","url_tmpl":"\/pages\/p\/[[p]]","url_tmpl_with_order":"\/pages\/p\/[[p]]\/ob\/[[ob]]"},"order":{"field":"id","type":"DESC","url_tmpl":"\/pages\/p\/[[p]]"},"module":{"title":"Pages","description":"List of pages","name":"pages"},"current":{"title":"Pages","description":"List of pages","name":"pages","url":"\/tutorials\/architettura"}},"components":{"alert":{"alert1":[{"type":"warning","message":"OK COMPONENT!"},{"type":"danger","message":"ERROR COMPONENT!"}]}},"messages":[]}