Foros del Web » Creando para Internet » HTML »

no carga los js, css en la vista

Estas en el tema de no carga los js, css en la vista en el foro de HTML en Foros del Web. Hola Espero puedan ayudarme con un problema que tengo con las vistas en mi sistema lo que pasa es que me funciona bien solo cuando ...
  #1 (permalink)  
Antiguo 19/07/2009, 22:16
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 9 años, 4 meses
Puntos: 2
Pregunta no carga los js, css en la vista

Hola

Espero puedan ayudarme con un problema que tengo con las vistas en mi sistema
lo que pasa es que me funciona bien solo cuando llamo al controlador/acción por defecto o solo al controlador, si quisiera llamar al controlador productos y la acción agregar me muestra la pagina pero no carga los JS ni los CSS.
Utilizo este código para importar los componentes de la vista, un layout, en el cual se carga un menú en el panel izquierdo, el contenido (forms ) en el panel central y mas información en el panel derecho

Codigo Vista

Código:
	public function setData ( $data ){
		if(!is_array($data)){
			$this->flash->error($data.'se esperaba un arreglo, se envio un ' . gettype( $data ));
		}
		$this->data = $data;
	}
	
	public function setErrorData ( $errorData ){
	//cambiar esto ya que puedo recibir tanto arrays como strings
		if ( !is_array( $errorData ) && isset( $errorData ) ){
			$this->flash->error($errorData.'se esperaba un arreglo, se envio un ' . gettype( $errorData ));
		}		
		$this->errorData = $errorData;
	}
	
	public function setLayout( $layout ){
		if ( !file_exists( $layout ) ){
			$this->flash->error($layout. ' no es un archivo existente');
		}
		$this->layout = $layout;
	}


	public function setTemplate( $template ){
		if ( !file_exists($template) ){
			$this->flash->error($template.' no es un archivo existente');
		}
		$this->template = $template;
	}
	
	public function render(){
	
		$content = $this->renderTemplate();
		include( $this->layout );
	}
	
	public function renderTemplate(){
		ob_start();
		@extract( $this->data, EXT_OVERWRITE );
		@extract( $this->errorData, EXT_OVERWRITE );
		include ( $this->template );
		$content = ob_get_clean();
		return $content;
	}
El layout.php tiene todo el codigo HTML, JS y CSS mas el codigo PHP que hace un echo de la variable content.

Que podria estra malo.??
  #2 (permalink)  
Antiguo 20/07/2009, 08:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 6 meses
Puntos: 2122
Respuesta: no carga los js, css en la vista

Si estas usando mod_rewrite tienes que usar el elemento HTML <base href="/sitio"> o en su caso usar rutas absolutas para que te cargue bien los CSS y los demás elementos.

Saludos.
  #3 (permalink)  
Antiguo 20/07/2009, 09:42
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 9 años, 4 meses
Puntos: 2
Respuesta: no carga los js, css en la vista

Hola GatorV

Gracias por tu pronta respuesta, bueno si uso mod_rewrite, voy a probar lo que me dices pero me surge una duda si coloco lo que me dices entonces no seria necesario especificar las etiquetas script para importar los JS y la etiqueta link para importar los CSS.

Saludos
  #4 (permalink)  
Antiguo 20/07/2009, 09:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 6 meses
Puntos: 2122
Respuesta: no carga los js, css en la vista

Si son necesarios recuerda que una cosa es PHP que se ejecuta en el servidor, otra cosa totalmente independiente es HTML. PHP lo único que hace es procesar el script e imprimir el HTML correcto.

Ya en HTML sí necesitas los tags para importar el CSS y lo demás pero necesitas la ruta correcta y la forma más sencilla es usando paths absolutos:
Código html:
Ver original
  1. <script src="/scripts/script1.js" type="text/javascript">
  2. <link rel="stylesheet" type="text/css" href="/css/style.css" />

(nota el uso de "/" al inicio, esto denota que va a buscar desde root.

Saludos.
  #5 (permalink)  
Antiguo 20/07/2009, 09:55
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 9 años, 4 meses
Puntos: 2
Respuesta: no carga los js, css en la vista

Haber si entendi

entonces tendria que dejarlo algo asi como esto:
<base href="http://localhost/miapp/css" />

<script src="/scripts/script1.js" type="text/javascript">
<link rel="stylesheet" type="text/css" href="/css/style.css" />
Es así o no?
  #6 (permalink)  
Antiguo 20/07/2009, 10:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 6 meses
Puntos: 2122
Respuesta: no carga los js, css en la vista

No, si vas a usar la ruta absoluta entonces ya no necesitas el <base>.

Como puedes ver tu tema no tiene nada que ver con PHP, te muevo al foro adecuado.

Saludos.

Tema trasladado desde PHP Orientado a Objetos.
  #7 (permalink)  
Antiguo 20/07/2009, 10:33
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 9 años, 4 meses
Puntos: 2
Respuesta: no carga los js, css en la vista

Como se puede colocar un base para los CSS y otro para los JS, lo que pasa es que me funciona pero me toma solo la primera ruta o sea si yo defino un base para los css me importa los CSS pero no los JS.

Alguna solución?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:32.