Yii Framework Forum: Utilizzare un JavaScript esterno - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Utilizzare un JavaScript esterno Rate Topic: -----

#1 User is offline   Excess 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 05-September 11

Posted 07 September 2011 - 08:32 AM

Salve a tutti,

il mio nuovo problema col framework Yii è rappresentato dall'utilizzo di ajax e in particolare sfruttare file javascript esterni alla pagina.

Seguendo una breve guida su ajax ho notato che all'interno di una pagina è possibile specificare i tag <script> che si occuperanno appunto di contenere funzioni js che potranno essere richiamate quando necessarie. Sempre seguendo la guida ho notato cosa ben più interessante, la possibilità di mettere queste funzioni in un file esterno file.js il quale viene poi utilizzato specificando nei tag seguenti:

<script type="text/javascript" src="path/to/file.js"></script>

Ho creato la mia pagina di prova e l'ho testata esternamente al framework, ed è funzionante ( sia pagina che file.js si trovano nella stessa directory . Tuttavia una volta spostati ad esempio nella cartella view/site/pages nonostante siano sempre nella stessa directory, non funziona più.

Un accorgimento:
Se invece di usare le funzioni in un file esterno, le inserisco tra i tag <script> all'interno della pagina stessa, funziona tutto correttamente ( quindi ajax implementato ).

Qualcuno di voi saprebbe spiegarmi quale è l'errore che commetto?

Grazie
0

#2 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,987
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 07 September 2011 - 09:25 AM

Yii preferisce che gli comunichi gli script: ci pensa lui a metterli nella pagina.

<?php
    $cs = Yii::app()->getClientScript();
    $cs->registerScript(
        'nome-script', '$("#LoginForm_username").focus();', CClientScript::POS_END
    );
?>

0

#3 User is offline   Excess 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 05-September 11

Posted 07 September 2011 - 10:03 AM

Uhm non capisco,

io ad esempio ho un file prova.js con dentro varie funzioni utili. Se voglio poterle richiamare in una pagina, come mi dovrei comportare?

Ad esempio ho trovato nella documentazione questa funzione che dovrebbe fare al mio caso:

<?php
    Yii::app()->clientScript->registerScriptFile(
	Yii::getPathOfAlias('application.components.js').'/provajs_esterno.js',
	CClientScript::POS_HEAD
	)
?>


Dove appunto provajs_esterno.js è il file JavaScript che voglio utilizzare e lo ho sistemato nella cartella protected/components/js. Tuttavia, continua a non funzionare come dovrebbe.
0

#4 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,987
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 07 September 2011 - 12:20 PM

In che senso non funziona? Come lo richiami nella view?
0

#5 User is offline   Excess 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 05-September 11

Posted 08 September 2011 - 01:10 AM

Lo inserisco prima del resto del codice cosi come l'ho postato.

Quando vado ad aprire la pagina nel browser e la ispeziono, di fatto nel codice del tag <head> mi ritrovo <script type="text/javascript" src="percorso/a/file.js"></script>.

Tuttavia è come se non ci fosse. Il codice del file.js è semplice e testato ( infatti come ho detto fuori dall'ambiente yii è perfettamente funzionante, e le funzioni vengono richiamate correttamente ).
0

#6 User is offline   Excess 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 05-September 11

Posted 08 September 2011 - 02:14 AM

Ok ho risolto il problema.

Da quanto son riuscito a capire ( considerando la mia ignoranza cosmica in argomento :) ) i file javascript che volevo includere erano inseriti in cartelle non accessibili tramite web, questo perchè apache non riesce ad accedere alla cartella protected.

Per risolvere ho semplicemente creato una cartella javascripts nella webroot contenente tutti i file js e per includerli ho notato che funziona sia registerScriptFile sia l'utilizzo di <script type="text/javascript" src="path/to/javascripts/file.js"></script>

Grazie dell'aiuto ;)
0

#7 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,987
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 12 September 2011 - 01:04 AM

Molto bene =).
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users