codeigniter y smarty

S

Buenas, tengo un problema, he integrado el motor de plantillas de smarty a codeIgniter y funciona correctamente.

El problema viene al cargar vistas, antes con codeigniter solo se cargaban de la siguiente forma:
$this->load->view('Aquí el nombre del archivo de la vista' );

Ahora para cargar vistas hago lo siguiente:
$this->smarty->view('Aquí el nombre del archivo de la vista' );

Bueno pues cuando lanzo mi controlador principal este carga correctamente las vistas y los estilos que le aplico. Cuando tengo que dirigirme a una nueva vista o recargo la vista actual no recarga los estilos que utilizo y se me ve el contenido sin ningún estilo aplicado.

A ver si alguien sabe que puede estar ocurriendo. Gracias!

zoeshadow

¿Es posible por el tema de la ruta que de la que está cogiendo los estilos?

Prueba a poner rutas ABSOLUTAS a las hojas de estilos a ver si se te soluciona el problema.

1 2 respuestas
S

#2 Hola, gracias por responder. Te comento particularizando en mi caso:

tengo un header.tpl y este contiene mis estilos:

header.tpl

<!DOCTYPE html>
<html lang="es-ES">
<head>
	<meta charset="utf-8">
	<title>{$title}</title>
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta name="description" content="Aplicacion web de control de impresoras y los consumibles correspondientes.">
	<meta name="author" content="Jose">
	

<style type="text/css">
	@import url("css/style.css");
	@import url("css/bootstrap.css");
	@import url("css/bootstrap-responsive.css");
</style>

<script src="js/jquery.js" type="text/javascript"></script>
<script src="js/validacion/jquery.validate.js" type="text/javascript"></script>
<script src="js/validacion/messages_es.js" type="text/javascript"></script>

</head>

<body>
<h2>Herramienta Web Para Control y Gestión De Impresoras</h2>

ahora un contenido que contiene un formulario

departamento.html

<form class="form-horizontal" id="formulario" action="./departamento_controller/addDepartamento" method="POST">
	<fieldset>
		<legend>Nuevo Departamento</legend>
		<div class="control-group">
			<label class="control-label" for="nombre">Inserta Nombre del Departamento: </label>
			<div class="controls">
				<input type="text" id="nombre" name="nombre" value="" placeholder="Nombre"><br>
			</div>
		</div>
		<div class="control-group">
			<label class="control-label" for="email">Inserta email del Departamento: </label>
			<div class="controls">
				<input type="text" id="email" name="email" value="" placeholder="Email"><br>
			</div>
		</div>
		<div class="control-group">
			<label class="control-label" for="telefono">Inserta Telefono del Departamento: </label>
			<div class="controls">
				<input type="text" id="telefono" name="telefono" value="" placeholder="Telefono"><br>
			</div>
		</div>
		<div class="control-group">
			<label class="control-label" for="fax">Inserta Fax del Departamento: </label>
			<div class="controls">
				<input type="text" id="fax" name="fax" value="" placeholder="Fax"><br>
			</div>
		</div>
		<div id="consola"></div>
		<div class="form-actions">
			<input type="submit" value="Guardar cambios">
		</div>
	</fieldset>
</form>

y por ultimo un footer.tpl que no es necesario q lo ponga ya que simplemente cierra las etiquetas body y html.

Cargo mis vistas en codeigniter y se ven correctamente con los estilos y todo, el problema viene cuando envío el formulario. Al no insertarme el registro porque ya se encuentra en mi base de datos recargo lheader.tpl, dicho formulario para volverlo a rellenar y el footer,pero este ya me aparece sin los estilos.

A ver si puedes ayudarme. Gracias de antemano

S

#2 con rutas absulotas me funciona correctamente, pero hay alguna forma de hacerlo con rutas relativas?

zoeshadow

Depende como hagas el redireccionamiento, recuerda que no puedes redireccionar a los archivos directamente, todas las peticiones a tu servidor han de pasar a traves de Codeigniter, posiblemente tu problema este ahí.

De todas maneras te recomiendo que trabajes con rutas absolutas, para hacer el codigo "portable", declara una ruta base en un archivo de configuracion desde la cual construir todas tus url's, esto te quitará muchos dolores de cabeza. ( Tambien puedes hacer una funcion que te calcule la ruta base a partir del punto de entrada a tu aplicación )

1 2 respuestas
Wasd

#5 Precisamente para temas de portabilidad se utilizan rutas relativas...
Lo que dices de asignar una ruta base en un archivo y utilizarla en los demás es correcto y limpio, sin embargo en cuanto cambies los ficheros de unidad, tendrás que cambiar esa ruta.

Con rutas relativas puedes mover todo el paquete manteniendo su estructura de directorios, y en principio no debería dar problema.

(He utilizado ambas formas y, por claridad y limpieza de código, prefiero la que dices tu, pero si hablamos de portabilidad, me decanto por las rutas relativas).

1 1 respuesta
zoeshadow

#6 Si haces todos los links/rutas a partir de un archivo de configuración cuando cambies de ordenador ( de dev a producción por ejemplo ) solo tendrías que cambiar una cosa, o ninguna, si tuvieses un archivo de configuración para desarrollo y otro para producción, como hace Symfony, y las ventajas que eso te aporta son muy grandes en cuanto a versatilidad y facilidad etc.

Y en cuanto a portabilidad, si quisiésemos usar nuestro archivo desde otro lugar de la aplicación ( como le está pasando a #1 ), se te rompería todo con rutas relativas, en cambio, con rutas absolutas, es mas fácil que te funcione "Out of the box".

1
S

#5 Como me creo un archivo de configuración?¿?¿?

Usuarios habituales