Este artículo describe la solución a la plantilla ThinkPhP sin analizarla directamente como está. Compártelo para su referencia. Los detalles son los siguientes:
1. Pregunta:
He estado aprendiendo la plantilla Thinkphp recientemente, pero descubrí que la página de la plantilla era como era. Después de una búsqueda dura, finalmente encontré la solución.
2. Solución:
Muchas personas se han encontrado con el mismo problema. Los caracteres de __root__, __public__ y __app__ contenidos en la cadena asignada en la variable se reemplazan con la ruta real cuando se muestra en la plantilla. Es decir, este problema se descubrió al escribir el sistema de administración de archivos TIMI.
Lea el código fuente del archivo y lo emitirá a la página y descubra que mientras el carácter de ruta sea TP, se reemplaza con la ruta real.
Por ejemplo:
La copia del código es la siguiente: $ this-> asigne ('fileContent', $ fileContent); // $ fileContent contiene el carácter __public__ "constante de ruta".
La página se emite como la ruta real /público /.
Durante este período, he probado muchas cosas, como el cifrado Base64 al asignarlo, y decodificarlo al emitir la plantilla, pero descubrí que no funcionaba. Finalmente, no pude evitar mirar el código fuente de TP y descubrí que en el último paso del método de visualización, reemplazé la "ruta TP constante" con la ruta real llamando al método de etiqueta. Es normal antes del método de renderizado.
Originalmente estaba planeando cambiar el código fuente para realizar los siguientes requisitos de zapatos de los niños:
Jefe, ¿es esta una solución temporal o una solución final?
Pero creo que es bueno agregar un juicio al método asignar ().
Si es $ this-> asigne ('', '', falso), el contenido no será reemplazado y la salida será AS-IS.
Como resultado, después de leer este código fuente, descubrí que no era tan fácil y que los cambios eran demasiado grandes.
La última respuesta de Otro Children's Shoes señaló la solución final:
"Puede consultar el contenido aquí: //www.vevb.com/article/54217.htm (reemplazo de plantilla)
Con la regla de reemplazo de plantilla, se reemplazarán todas las cadenas __public__ en la página. Si realmente necesita emitir cadenas __public__ a la plantilla, podemos agregar la regla de reemplazo, por ejemplo:
Copie el código de la siguiente manera: 'TMPL_PARSE_STRING' => Array (
'--Public--' => '__public__', // Use nuevas reglas para salir/cadena pública
)
Después de agregar la regla de reemplazo de esta manera, si queremos generar la cadena __public__, solo necesitamos agregar--Public- a la plantilla, y el método de salida de otras cadenas de reemplazo es similar.
Después de agregar la regla de reemplazo de esta manera, si queremos generar la cadena __public__, solo necesitamos agregar--Public- a la plantilla, y el método de salida de otras cadenas de reemplazo es similar.
Entonces, el plan fue lanzado:
Configurar en el archivo de configuración de TP config.php
Copie el código de la siguiente manera: 'TMPL_PARSE_STRING' => Array (// Configuración de la ruta
// restaurar la ruta del archivo TIMI
'--Public--' => '__public__',
'--App--' => '__app__',
'--Url--' => '__url__',
'--Action--' => '__Action__',
'--Self--' => '__Self__',
'--Info--' => '__info__',
'--Ext--' => '__ext__'
),
Al leer el código fuente, reemplace el "carácter constante de ruta" __root__ como --Root--::
La copia del código es la siguiente: $ fileContent = file_get_contents ($ filepath);
$ fileContent = htmlspecialchars (preg_replace ('/__(.*?)__/ es', '-$ 1-', $ fileContent));
Luego, la configuración TMPL_PARSE_STRING se reemplaza cuando se analiza la plantilla, como se muestra en la figura a continuación:
Por lo tanto, este problema se resolvió "temporalmente" y "perfectamente".
Espero que este artículo sea útil para la programación del marco ThinkPhp de todos.