Código de actividad:
pública función storeEntry () { $ this -> pantalla ( 'store_entry' ); }
Visita el enlace: http: //lanse1993.com/store/store_entry
[Problema] serán store_entry.html contenido en la renderización de páginas, pero el método storeEntry no se llama, el código fuente subyacente de seguimiento tp:
Dispatcher.class.php
/ * * * Obtener el nombre de la operación real * / privada estática función de la getAction ( $ var , $ urlCase = C ( 'URL_CASE_INSENSITIVE' )) { $ Acción =! Vacío ( $ _POST [ $ var ])? $ _POST [ $ var ] : (! empty ( $ _GET [ $ var ?]) $ _GET [ $ var ]: C ( 'default_action' )); unset ( $ _POST [ $ var ], $ _GET [ $ var]); IF ( $ Mapas = C ( 'URL_ACTION_MAP' )) { IF ( isset ( $ Mapas [ strtolower (CONTROLLER_NAME)])) { $ Mapas = $ Mapas [ strtolower (CONTROLLER_NAME)]; IF ( isset ( $ Mapas [ strtolower ( $ Acción )])) { // registrar los alias actuales DEFINE ( 'ACTION_ALIAS', strtolower ( $ Acción )); // obtener el nombre funcionamiento real si ( is_array ( $ mapas [ACTION_ALIAS])) { parse_str ( mapas de $ [ACTION_ALIAS] [1], $ vars ); $ _GET = array_merge ( $ _GET , $ vars ); devolver $ mapas [ACTION_ALIAS] [0 ]; } Demás { retorno $ mapas [ACTION_ALIAS]; } } Elseif ( array_search ( strtolower( $ Action ), $ mapas )) { // 禁止访问原始操作 retorno '' ; } } } Si (C ( 'ACTION_NAME_STYLE', nula , 1) == 0 ) { $ action = $ urlCase ? strtolower ( $ action ): $ action ; } Demás { $ action = $ urlCase ? lcfirst (parse_name ( strtolower ( $ action ), 1)): lcfirst (parse_name ( $ acción, 1 )); } Devolver strip_tags ( $ acción ); }
Controller.class.php
/ * * * Método mágico con una operación realizada cuando la ausencia * públicos @access * @param $ cadena del nombre del método Método * @param array $ args parámetro * @return mixto * / público en función de la __call ( $ Método , $ args ) { SI (0 === strcasecmp ( $ Método , ACTION_NAME C ( 'ACTION_SUFFIX'. ))) { IF ( method_exists ( $ del este , '_empty' )) { // si se invoca la operación _empty definido $ al este -> _ vaciar ( $ método, , $ args ); } ELSEIF (file_exists_case ( $ del este -> Ver-> parseTemplate ())) { // cheque si hay plantilla predeterminada si una plantilla es directamente salida de $ del este -> la pantalla (); } else { APP_DEBUG == false send_http_status && (404 ) ; E (L ( '_ERROR_ACTION_') ':' .. ACTION_NAME); } } else { APP_DEBUG == false && send_http_status (404 ); E ( __CLASS__ .. ':' $ Método. L ( '_ METHOD_NOT_EXIST_' )); volver ; } }
configuración
'ACTION_NAME_STYLE' => 0, // método de petición no maneja estilo 0 No 1 está dispuesto joroba 'URL_CASE_INSENSITIVE' => verdadero , // defecto falso a verdadero, dicha URL es sensible a mayúsculas mayúsculas y minúsculas
Análisis: enrutamiento analítica no maneja (no convertido joroba) y no es sensible a mayúsculas, que el nombre real de la operación después de que store_entry y Store_entry determinación todo store_entry; por supuesto, este método no existe en el controlador, y un conjunto de la clase padre Controller __call el método mágico, comprobar la presencia de la store_entry.html plantilla por defecto, por lo plantillas de salida de representación directa