{% extends "@index/base.html.twig" %} {% set page_id = 'backend' %} {% set noindex = true %} {% set oneColumn = true %} {% set title = 'Info' %} {% block lang %}{% endblock lang %} {% block cart %}{% endblock %} {% block stylesheet %} {{ parent() }} {% endblock stylesheet %} {% block bread %}{% endblock bread %} {% block oneOne %}
{% for route in routes %} {% endfor %}
Route Name Path Params Values
{{ route.name }} {{ route.path }} {% for k,v in route.params %} {{ k }} > {{ v }} {{ loop.index < loop.length ? ' | ' : '' }} {% endfor %} {% for k,v in route.values %} {{ k }} > {{ v }} {{ loop.index < loop.length ? ' | ' : '' }} {% endfor %}
{% for page in pages %} {% endfor %}
Route Name Path Params Values
{{ page.name }} {{ page.path }} {% for k,v in page.params %} {{ k }} > {{ v }} {{ loop.index < loop.length ? ' | ' : '' }} {% endfor %} {% for k,v in page.values %} {{ k }} > {{ v }} {{ loop.index < loop.length ? ' | ' : '' }} {% endfor %}
  • MONOLOG

    https://github.com/Seldaek/monolog

    
                //******************** LOG
                $log = new Logger('name');
                $log->pushHandler(new StreamHandler(ROOT_DIR.'log/system.log', Logger::WARNING)); //Registro de logs en archivos
                $log->addWarning('warning. Ejecutado controlador HELPERS'); //Añadir un WARNING
                $log->addError('error. Bar'); //Añadir un ERROR
                //******************** LOG
                            
  • PHP MAILER

    Ejemplo de envío de un correo

  • CACHE

    https://github.com/cosenary/Simple-PHP-Cache

    Imprescindible para almacenar en formato JSON consultas de la base de datos. Datos que no se actualizan con frecuencia y son genéricos, no están relacionados con un usuario

    
                //******************** CACHE
    
                //Setup the Cache
                $c = new Cache(array(
                  'name'      => 'cacheos',
                  'path'      => ROOT_DIR . 'cache' . DS . 'content' . DS,
                  'extension' => '.cache'
                ));        
    
                //$c->setCache('newcache');
    
                // Elimina la caché que ha expirado
                echo $c->eraseExpired() . ' expired items erased!';        
    
                //Comprueba si existe el archivo de caché con id = movies
                $result = $c->isCached('movies');        
    
                //Si existe obtiene el contenido mediante el id = movies
                if($result){
    
                    //To retrieve the timestamp of a key, set the second parameter to true. retrieve('movies', true)
                    $data = $c->retrieve('movies');
    
                    //This allows you retrieve all the cached data at once. You get the meta data by setting the $meta argument to true.
                    $data = $c->retrieveAll(true);    
    
                //Sino existe genera el archivo de caché
                }else{
    
                    echo "STORE";
                    //Store data. store($key, $data, <$expiration>)
                    $c->store(
                        'movies', 
                        array(
                            'description' => 'Time: ' . date('H:i:s'),
                            'Action' => array(
                                'Tropic Thunder',
                                'Bad Boys',
                                'Grano'
                                )
                        ),
                        10 //seconds
                    );    
                    $c->store(
                        'music', 
                        array(
                            'description' => 'Time: ' . date('H:i:s'),
                            'Action' => array(
                                'music',
                                'beatles',
                                '1970'
                                )
                        ),
                        20 //seconds
                    );            
                } 
    
                // Generate a new Cache file with the name 'newcache'
                //$c->setCache('newcache');        
    
                // Erase entry by its key
                // erase($key) Erases a single entry by its key.
                // eraseAll() Erases all entries from the Cache file.
                // eraseExpired() Erases all expired entries.
                //$c->erase('hello');   
    
                //******************** CACHE            
                            
    {% if COMMENT_BUNDLE %}
  • widgetComments

    Listado de comentarios vinculados a un apartado, en este caso al blog. En el listado de comentarios aparece la foto del autor, fecha de publicación, enlace y título a la entrada comentada y extracto del comentario. Este widget permite establecer el límite de comentarios a mostrar.

    render("comment","frontend","widgetComments",{'parent':'blog','limit':2}) {{ render("comment","frontend","widgetComments",{'parent':'blog','limit':2}) }}
  • renderComments

    Presentación de comentarios y formulario para enviar un nuevo comentario. Este widget se puede asociar a cualquier apartado e incluso a url's determinadas que no forman parte de ningún bundle en concreto.

    render("comment","frontend","renderComments",{'permalink': '', 'parent': 'blog' ,'parent_id': 1 }) {{ render("comment","frontend","renderComments",{'permalink': '', 'parent': 'blog' ,'parent_id': 1 }) }}
  • {% endif %} {% if CATEGORY_BUNDLE %}
  • widgetCategoryMenu

    Monta un menú horizontal convencional. Soporte hasta 5 subniveles y los items enlazan con el campo URL introducido en el item. El controlador requiere obligatoriamente de la familia de categorías (family_id) y opcionalmente el item que se va a destacar (mainmenu). En este menú, se pasará como parámetro en mainmenu el SLUG del item que se quiere destacar.

    render("category","frontend","widgetCategoryMenu",{'family_id': 2 ,'mainmenu': 'cadenas'}) {{ render("category","frontend","widgetCategoryMenu",{'family_id': 2 ,'mainmenu': 'cadenas'}) }}
  • widgetCategoryVerticalMenu

    Menú vertical que despliega los subapartados con la acción del mouse al pasar por encima (hover) y mantiene desplegado el subapartado pasado por el parámetro MAINMENU, en este caso debe corresponder con el campo URL del item y no con SLUG como sucede en el menú horizontal.

    render("category","frontend","widgetCategoryVerticalMenu",{'family_id': 2 ,'mainmenu': '/catalogo/bidones'}) {{ render("category","frontend","widgetCategoryVerticalMenu",{'family_id': 2 ,'mainmenu': '/catalogo/bidones'}) }}
  • widgetCategoryTree

    En lugar de crear un menú donde los items enlazan con la url introducida en el campo URL, se monta automáticamente una url a partir de la estructura de las categorias. Se usa el campo SLUG para crear la estructura y el campo URL queda anulado.

    Parámetros:
    family_id Selecciona las categorías que pertenecen a un grupo (categories.family_id)
    mainmenu Resaltar la opción del menú seleccionada mediante el id (categories.id)
    prefix Prefijo para montar la url, por ejemplo: /categorias/
    category_id Obtiene una sola categoría, similar al método getCategory()
    parent Interviene la tabla categoryRelations y obtiene las categorías para el parent especificado. Devolvería solo las categorías que tienen contenido, depende del parent, ya sea blog, image, shopProduct...
    parent_id No tiene sentido usarlo sin especificar parent. Junto parent, devuelve las categorias asignadas al item con el cual se relaciona, por ejemplo las categorías a las que pertenece una entrada del blog.

    render("category","frontend","widgetCategoryTree",{ 'family_id': 2 , 'mainmenu': 'pegatinas' } ) {{ render("category","frontend","widgetCategoryTree",{'family_id': 2 ,'mainmenu': 'pegatinas'}) }}
  • widgetCategoryGrid

    Crea una cuadrícula con todas las categorías sin tener en cuenta los subniveles. Muestra la imagen si la categoría tiene asociada una imagen y enlaza con el campo URL determinado en el item.

    render("category","frontend","widgetCategoryGrid",{'family_id': 8 ,'mainmenu': 'pegatinas'}) {{ render("category","frontend","widgetCategoryGrid",{'family_id': 8 ,'mainmenu': 'pegatinas'}) }}
  • widgetCategoryPost

    Widget que muestra las categorías asociadas a un determinado parent, en este caso las categorías del Blog id = 1. Usado por ejemplo, en la vista ampliada de un post del blog. Las categorías montan la url automáticamente enlazando con el contenido de la categoría en cuestión.

    render("category","frontend","widgetCategoryPost",{'parent': 'blog' ,'parent_id': 1}) {{ render("category","frontend","widgetCategoryPost",{'parent': 'blog' ,'parent_id': 1}) }}
  • widgetCategoryBackend

    Indicado para gestionar las categorías asociadas a un elemento de la web. Usado por ejemplo, en el gestor de blogs, donde se asocian los elementos de una familia de categorías una determinada entrada del blog.

    render("category","backend","widgetCategoryBackend",{'family_id': 4, 'parent': 'blog' ,'parent_id': 1}) {{ render("category","backend","widgetCategoryBackend",{'family_id':4,'parent': 'blog','parent_id': 1}) }}
  • widgetCategoryBreadCrumbs

    Menú convertido en un breadCrumbs. Puede llegar a una profundidad de 3 niveles y se basa en la url para determinar el ítem seleccionado. Es necesario que todos los items del menú tengan asignada la url.

    render("category","frontend","widgetCategoryBreadCrumbs",{'family_id': 4 ,'mainmenu': '/programacion/php/animales'}) {{ render("category","frontend","widgetCategoryBreadCrumbs",{'family_id': 4 ,'mainmenu': '/programacion/php/animales'}) }}
  • {% endif %} {% if WIDGETS_BUNDLE %}
  • widgetLike

    Siempre va relacionado con un registro del blog, un comentario, una pregunta frecuente, etc.. se puede asociar a cualquier elemento y tan solo es necesario el parent (blog, comments, faq, etc.. ) y el id del registro.

    render("widgets","like","widgetLike",{'parent': 'blog' ,'id': 1}) {{ render("widgets","like","widgetLike",{'parent': 'blog' ,'id': 1}) }}
  • widgetRelationShipGrid

    Widget que muestra artículos o registros relacionados con un registro determinado. Se basa en las categorías o tags comunes. Además el widget permite la asociación directa por Id. Este widget va complementado con el widget para el backend (widgetRelationShipBackend) que podemos ver en el ejemplo siguiente. En este ejemplo podemos ver los artículos del blog y shop relacionados.

    Blog

    render("widgets","relationShip","widgetRelationShipGrid",{'parent': 'blog' ,'parent_id': 1}) {{ render("widgets","relationShip","widgetRelationShipGrid",{'parent': 'blog' ,'parent_id': 1}) }}

    Shop

    render("widgets","relationShip","widgetRelationShipGrid",{'parent': 'shopProduct' ,'parent_id': 4}) {{ render("widgets","relationShip","widgetRelationShipGrid",{'parent': 'shopProduct' ,'parent_id': 4}) }}
  • widgetRelationShipBackend

    Widget que trabaja en el backend y sirve para gestionar los registros relacionados.

    render("widgets","relationShip","widgetRelationShipBackend",{'parent': 'blog' ,'parent_id': 1}) {{ render("widgets","relationShip","widgetRelationShipBackend",{'parent': 'blog' ,'parent_id': 1}) }}
  • widgetNetworks

    Muestra gráficamente enlaces a las redes sociales más habituales. Desde el backend se pueden seleccionar casi todas las redes sociales e incluso se puede vincular a cada usuario.

    render("widgets","socialNetworks","widgetNetworks",{'user_id': 1 }) {{ render("widgets","socialNetworks","widgetNetworks",{'user_id': 1 }) }}
  • widgetTags

    Listado de tags relacionados con un vídeo, blog..

    render("widgets","tags","widgetTags",{'parent': 'blog' ,'parent_id': 1}) {{ render("widgets","tags","widgetTags",{'parent': 'blog' ,'parent_id': 1}) }}
  • widgetBackend

    Listado de tags relacionados con un vídeo, blog..

    render("widgets","tags","widgetBackend",{'parent': 'blog' ,'parent_id': 1}) {{ render("widgets","tags","widgetBackend",{'parent': 'blog' ,'parent_id': 1}) }}
  • {% endif %} {% if SHOP_BUNDLE %}
  • widgetCartCount

    Muestra el contador de productos del carrito de la compra. Se puede personalizar el estilo fácilmente. Actualmente dispone de los estilos shop y base.

    render("shop","frontend","widgetCartCount", {'style':'shop'}) {{ render("shop","frontend","widgetCartCount", {'style':'shop'}) }} render("shop","frontend","widgetCartCount", {'style':'base'}) {{ render("shop","frontend","widgetCartCount", {'style':'base'}) }}
  • widgetShoppingCart

    Muestra un listado de los productos en el carrito, con algunos detalles como el precio y el coste total del carrito. Desde este widget se puede acceder a la formalización del pedido.

    render("shop","frontend","widgetShoppingCart") {{ render("shop","frontend","widgetShoppingCart") }}
  • widgetProducts

    Muestra en formato grill un listado de productos pudiendose seleccionar el número máximo de productos a mostrar.

    render("shop","frontend","widgetProducts",{'limit':'3'}) {{ render("shop","frontend","widgetProducts",{'limit':'3'}) }}
  • {% endif %}
  • Dependencias

    • jquery.ui.core.js
    • jquery.ui.datepicker.js

    Datepicker

    Date:

    $(function() {
        $("#datepicker").datepicker();
    });
    
    http://jqueryui.com/datepicker/

    Requiere jquery-ui-1.10.3.custom.min.js y jquery-ui-1.10.3.custom.min.css

    Completo Datepicker con Timepicker

    Date:

    $( "#completeDatepicker" ).datetimepicker({
        dayNamesMin: [ "Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa" ],
        monthNames: [ "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" ],
        firstDay: 1,
        dateFormat: "dd-mm-yy",
        changeMonth: true,
        changeYear: true,
        numberOfMonths: 1,
        showOtherMonths: true,
        selectOtherMonths: true,
        onClose: function(dateText, inst) {
            alert('close');
        },                
    }); 
    

    Requiere jquery-ui-1.10.3.custom.min.js, jquery-ui-timepicker-addon.js y jquery-ui-1.10.3.custom.min.css

    http://jqueryui.com/datepicker/
    http://trentrichardson.com/examples/timepicker/

Badgets

  • Nomenclatura en PHP

    Nombre de clase 'CamelCase': IndexController

    Métodos de clase y funciones 'lowerCamelCase': phpInfo()

    Propiedades de clase y variables: $model_backend

    Constante: EMAIL_ADMIN

    Variable global: $_conf

    Matrices 'lowerCamelCase' y 'arr' al inicio: $arrDatosAsociativos

    Objeto 'lowerCamelCase' y 'obj' al inicio: $objInstanciaObjeto

  • Nomenclatura en JS/JQUERY

    Variables locales: var mi_valor

    Variables global: mi_valor

    Funciones 'lowerCamelCase': phpInfo()

  • Nomenclatura en HTML

    Atributo class y id 'lowerCamelCase': languageSwitcher

    Atributo data: data-webservice-url=''

    Atributo name en Input: model_backend

  • Nomenclatura en LESS

    Funciones 'lowerCamelCase': .borderRadius(@radius: 5px){}

  • Nomenclatura para los archivos

    Imágenes: logo-principal.jpg

    Hojas de estilo: widgets-category.css

    Javascript: html5-uploader.js

    Archivos twig 'lowerCamelCase': formalizeOrder.html.twig

    Controladores y modelos 'CamelCase': BackendController.php, OrderModel.php

  • Constantes PHP, variables en Less y Js

    Para Less y Js no están disponibles los datos del array ACTIVE_BUNDLES

      {% for k,v in constants %}
    • {{ k }} ({{ v }})
    • {% endfor %}
  • Variables disponibles en plantillas Twig

    No están disponibles las variables de PHP que están vacías.
    Acceso a las variables multidimensionales, por ejemplo SESSION: SESSION.userData.username.
    La variable anterior también está disponible en PHP: $_SESSION['userData']['username']

      {% for k,v in twigvars %}
    • {{ k }} ({{ v }})
    • {% if v|length %}
        {% for ki,vi in v %}
      • {{ ki }} ({{ vi }})
      • {% if vi|length %}
          {% for kia,via in vi %}
        • {{ kia }} ({{ via }})
        • {% endfor %}
        {% endif %} {% endfor %}
      {% endif %} {% endfor %}
  • {% set SnippetsMethods = { 'formatBytes': 'Convierte Bytes en Gb, Mb o Kb', 'unserializeArray': 'Montar un array después de recibir los datos de un form vía ajax, por ejemplo, enviados con jQuery: $form.serializeArray()', 'validateToken': 'Valida si una petición Ajax es segura', 'array2csv': 'Convierte un array en un archivo CSV. Combinado con downloadSendHeaders, fuerza la descarga', 'downloadSendHeaders': 'Fuerza la descarga del archivo pasado por parámetro', 'isValidEmail': 'Verifica un email utilizando un patrón de expresión regular', 'randPassword': 'Genera una cadena de texto que puede emplearse para una contraseña', 'generateCaptcha': 'Genera una imagen que contiene un número además de crear una variable de sesión con el mismo valor', 'redirect': 'Redirección a la url indicada vía PHP o Javascript si se pasan valores', 'secondsToText': 'Transforma segundos en una cadena de texto tipo años, días, horas, minutos y segundos', 'minifyCSS': 'Optimiza internamente un archivo Css eliminando espacios y saltos de línea innecesarios', 'getNameFilesDir': 'Obtiene el nombre de los archivos contenidos en un directorio', 'userFileError': 'Devuelve información acerca del error producido al subir un archivo al servidor. $_FILES[\'userfile\'][\'error\']', 'removeDir': 'Elimina un directorio y todos sus subdirectorios', 'showMsg': 'Usado únicamente en el Bundle UserBundle', 'getVar': 'Usado únicamente en el Bundle UserBundle', 'dateFormat': 'Le da formato a una fecha. http://php.net/manual/es/function.strftime.php', 'dateDiff': 'Devuelve el tiempo transcurrido entre dos fechas en un formato legible', } %} {% set LibraryMethods = { 'getArguments': 'Obtiene la lista de parámetros pasada a un método con sus respectivos valores, usada en el método debugQuery', 'debugQuery': 'Se usa en la barra de debug para mostrar la Info de debug', 'url': 'A partir del identificador de una ruta y sus parámetros se crean las url\'s para los enlaces, de manera totalmente dinámica', 'render': 'Este método se usa básicamente en las plantillas Twig y hace el efecto similar a un iframe, donde se puede cargar cualquier tipo de contenido, indicando el bundle, controlador, método y parámetros', 'trans': 'Se pasa el identificador de una traducción y devuelve una cadena de texto relacionada con el idioma en curso', 'breadCrumbs': 'Imprime una barra de navegación tipo migas', 'setFilters': 'Función exclusiva usada en el filtro de fecha de los diferentes backends', 'compileLess': 'Recupera todos los archivos Less y Css del framework y genera un único archivo principal de estilos', 'tmpLess': 'Recupera todos los archivos Less y Css del framework y genera un archivo público en formato Css para cada archivo procesado', 'compileJs': 'Recupera todos los archivos Js del framework y genera un único archivo principal de javascript', 'tmpJs': 'Recupera todos los archivos Js del framework y genera un archivo público en formato Js para cada archivo procesado', 'jsCssGlobals': 'Genera los archivo 1.global.less y 1.global.js que se alojan en lib/public', 'compileRoutes': 'Recupera todos los archivos de enrutamiento del framework y genera un único archivo de rutas que se almacena en la caché', 'minifyCSS': 'Optimiza internamente un archivo Css eliminando espacios y saltos de línea innecesarios', 'setCategoryStructure': 'Usada para montar el árbol de categorías en CategoryBundle' } %} {% set theControllerMethods = { 'isAjaxRequest': 'Verifica si una petición es del tipo xmlhttprequest (ajax)', 'url': 'Acceso directo al método alojado en \Helpers\Library::url()', 'debug': 'Devuelve true si la sesión está iniciada y el entorno es de desarrollo. Método usado explícitamente para cachear consultas', 'cacheMysql': 'Similar a la anterior, pero además comprueba CACHE_MYSQL_DEV y CACHE_MYSQL_PROD con el objetivo de cachear las consultas MySql', 'cacheHtml': 'Igual que la anterior, comprueba CACHE_HTML_DEV y CACHE_HTML_PROD, con el objetivo de cachear contenido HTML', 'secutiry': 'Método que se emplea para redireccionar a la home si el usuario trata de acceder a un espacio privado, solo accesible para super administradores', 'isSigned': 'Comprueba si us usuario ha iniciado sesión, y devuelve true|false', 'isBasicRole': 'Comprueba si un usuario tiene el rol básico, y devuelve true|false', 'isAdminRole': 'Comprueba si un usuario tiene el rol de administrador, y devuelve true|false', 'isSuperAdminRole': 'Comprueba si un usuario tiene el rol de super administrador, y devuelve true|false', 'dev': 'Sinónimo de DEVELOPMENT_ENVIRONMENT, comprueba si el entorno es de desarrollo', 'getUserId': 'Obtiene el identificador del usuario', 'getUserSessionId': 'Obtiene el identificador de sesión', 'getUserRole': 'Obtiene el role del usuario, basic|admin|superadmin|guest ', 'stringToUrl': 'Convierte una cadena de texto en una cadena apta para pasar por URL', 'email': 'Envía un email según los parámetros indicados, por SMTP o SENDMAIL', 'getUserIp': 'Obtiene la IP del usuario', 'getBrowser': 'Obtiene el navegador web del usuario', 'isMobile': 'Identifica si el usuario está accediendo a la web desde un dispositivo móvil', 'array2csv': 'INVESTIGAR SI SE USA DESDE EL CONTROLADOR, YA QUE ESTÁ DISPONIBLE EN LIBRARY', 'download_send_headers': 'INVESTIGAR SI SE USA DESDE EL CONTROLADOR, YA QUE ESTÁ DISPONIBLE EN LIBRARY' } %}

    Relación de CLASSES en NAMESPACE \Helpers

      {% for class in arrHelpers %}
    • {{ class }}
    • {% endfor %}

    Métodos disponibles en \Helpers\Snippets

    Métodos genéricos que no realizan tareas internas en el Framework. Se puede usar en los archivos php con la siguiente notación: \Helpers\Snippets::validateToken(). Asimismo, se puede referencia a estos métodos desde la clase TwigExtendFunctions para poder usarlos desde las plantillas Twig.

      {% for method in classSnippetsMethods if method != '__construct' %}
    • {{ method }}
    • {% if method in SnippetsMethods|keys %}
    • {{ attribute(SnippetsMethods,method) }}
    • {% endif %} {% endfor %}

    Métodos disponibles en \Helpers\Library

    Métodos que en su mayoría realizan tareas internas complejas en el Framework. Se puede usar en los archivos php con la siguiente notación: \Helpers\Library::compileJs(). Asimismo, se puede referencia a estos métodos desde la clase TwigExtendFunctions para poder usarlos desde las plantillas Twig, como se hace habitualmente con los métodos url(), trans() y render().

      {% for method in classLibraryMethods if method != '__construct' %}
    • {{ method }}
    • {% if method in LibraryMethods|keys %}
    • {{ attribute(LibraryMethods,method) }}
    • {% endif %} {% endfor %}

    Métodos disponibles en \System\Controller

    Métodos usados de manera frecuente e insertados en la clase Controller que está disponible por defecto en todo el framework

      {% for method in controllerMethods if method != '__construct' %}
    • {{ method }}
    • {% if method in theControllerMethods|keys %}
    • {{ attribute(theControllerMethods,method) }}
    • {% endif %} {% endfor %}

    Métodos disponibles en \Helpers\TwigExtendedFunctions

    Métodos usados practicamente de manera exclusiva en las plantillas Twig. Algunos de estos métodos hacen la petición directamente a la clase Library y Snippets.

      {% for method in twigExtendedFunctions if method != '__construct' %}
    • {{ method }}
    • {% endfor %}
  • El modelo

    Métodos disponibles en el modelo base

    • selectById()
    • selectAll()
    • selectValue()
    • getTableFields()
    • insert()
    • update()
    • delete()
  • Vista

    Vista

  • Controlador

    Controlador

  • Twig

    Include

    {% include '@video/frontend/includes/boxVideo.html.twig' %}

    Render sin parámetros

    {{ render('widget','categoryRoll','category') }}

    Render con parámetros

    {{ render('widget','widgetCompanyInfo','company',{'company_id':company.ID_Cliente}) }}

    Url sin parámetros

    {{ url('home') }}

    Url con parámetros

    {{ url('producto',{'company':product.company_slug,'product':product.product_slug}) }}

  • Less

    Funciones disponibles

    • .borderRadius(4px)
    • .borderRadiusTopLeft(6px)
    • .borderRadiusTopRight(6px)
    • .borderRadiusBottomLeft(6px)
    • .borderRadiusBottomRight(6px)
    • .boxShadow(0px, 1px, 10px, 0px, 0, 0, 0, 1, inset)
    • .gradient(#7fbf4d,#63a62f)
    • .transition(background-color,0.2s,ease-in,0s);

    Url para imagen

    background:url(@IMAGES_URL+'backend/checkbox.png')

  • Otros aspectos

    Activar/desactivar temporalmente modo desarrollo

    http://es.israelnoguera.com/?develop=1

  • Directivas del servidor

      {% for k,v in php_ini %}
    • {{ v.1 | raw }}

      {{ v.2 }}

      {{ v.0 }} ({{ k }})
    • {% endfor %}
  • Opciones de configuración PHP

    PHP_INI_USER 1 La entrada puede definirse en scripts de usuario o en el registro de Windows

    PHP_INI_PERDIR 2 La entrada puede definirse en php.ini, .htaccess o httpd.conf

    PHP_INI_SYSTEM 4 La entrada puede definirse en php.ini o httpd.conf

    PHP_INI_ALL 7 La entrada puede definirse en cualquier parte

    {{ debug(iniGetAll) }}
  • Variables de MySQL

    ft_min_word_len -> determina el número de caracteres a partir del cual se hace la busqueda en campos FULL INDEX

    {{ debug(mysqlVariables) }}
{% endblock oneOne %} {% block javascript %} {{ parent() }} {% endblock javascript %}