Yii Framework Forum: dipendenza webapp - Yii Framework Forum

Jump to content

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

dipendenza webapp sono un po' confuso Rate Topic: -----

#1 User is offline   Sbidiguda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 18-April 12

Posted 24 April 2012 - 08:55 AM

Salve a tutti, avrei una domanda da porvi. Ho creato la mia webapp e ho già iniziato a modificarla in base alle mie esigenze ma mi sono trovato davanti ad un dubbio. La cartella che yii crea per l'applicazione rimane dipendente dalla cartella base di yii (quella originale del framework per intenderci)? Ho visto che carica dinamicamente degli script .js quando ad esempio si richiama la pagina dei contatti e questo mi crea dei problemi con uno slider avendo già incluso la lib jquery in precedenza, però dentro la cartella della mia applicazione non trovo niente nei controller o nelle viste che si presti a questi richiami, quindi avrei bisogno di capire se le configurazioni che richiamano le librerie sono dentro la cartella del framework originale.

Grazie in anticipo :)
0

#2 User is offline   sensorario 

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

Posted 24 April 2012 - 06:20 PM

Non ho capito niente di quello che hai detto ma ho capito che hai caricato jquery "a mano".

Se vuoi caricare del codice javsascript, devi passare per:
Yii::app()->getClientScript()->registerScript('nome', '

alert("!!!!");

');

0

#3 User is offline   Sbidiguda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 18-April 12

Posted 26 April 2012 - 07:33 AM

 sensorario, on 24 April 2012 - 06:20 PM, said:

Non ho capito niente di quello che hai detto ma ho capito che hai caricato jquery "a mano".

Se vuoi caricare del codice javsascript, devi passare per:
Yii::app()->getClientScript()->registerScript('nome', '

alert("!!!!");

');


Grazie per la risposta ;D .
Allora....vediamo se riesco a spiegarmi meglio.
Questo è il codice con il richiamo ai vari css/script in head di pagina:
<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/main.css" />
	<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/form.css" />
        <link rel="stylesheet" href="<?php echo Yii::app()->request->baseUrl; ?>/assets/7d6b018b/nivo-slider/nivo-slider.css" type="text/css" media="screen" />
        <script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/assets/7d6b018b/jquery.js"></script>
        <script src="<?php echo Yii::app()->request->baseUrl; ?>/assets/7d6b018b/nivo-slider/jquery.nivo.slider.pack.js" type="text/javascript"></script>
        <script>
            $(document).ready(function() {
                $('#slider').nivoSlider({
                effect:'fade',
                animSpeed: 500,
                pauseTime: 5000,
                directionNav: false, 
                directionNavHide: true,
                controlNav: false, 
                controlNavThumbs: false
            });
            $('.form').hide();           
            $('.contact').find('.toform').click(function () {
                var mail= $(this).val();
                $("#ContactForm_email").val(mail);
            $('.form').show(700);
            });
            });
        </script>

Tutto questo funziona bene, ma quando apro la pagina dei contatti, quindi quella del form standard che crea yii, nell'html generato mi ritrovo 2 chiamate che presumo vengano fatte automaticamente e la situazione è questa:
<link rel="stylesheet" type="text/css" href="/Nome_progetto/css/main.css" />
	<link rel="stylesheet" type="text/css" href="/Nome_progetto/css/form.css" />
        <link rel="stylesheet" href="/Nome_progetto/assets/7d6b018b/nivo-slider/nivo-slider.css" type="text/css" media="screen" />
        <script type="text/javascript" src="/Nome_progetto/assets/7d6b018b/jquery.js"></script>
        <script src="/Nome_progetto/assets/7d6b018b/nivo-slider/jquery.nivo.slider.pack.js" type="text/javascript"></script>
        <script>
            $(document).ready(function() {
                $('#slider').nivoSlider({
                effect:'fade',
                animSpeed: 500,
                pauseTime: 5000,
                directionNav: false, 
                directionNavHide: true,
                controlNav: false, 
                controlNavThumbs: false
            });
            $('.form').hide();           
            $('.contact').find('.toform').click(function () {
                var mail= $(this).val();
                $("#ContactForm_email").val(mail);
            $('.form').show(700);
            });
            });
        </script>
	<script type="text/javascript" src="/Nome_progetto/assets/7d6b018b/jquery.js"></script>
<script type="text/javascript" src="/Nome_progetto/assets/7d6b018b/jquery.yiiactiveform.js"></script>

Gli utlimi 2 richiami, da quel che ho capito mi bloccano il funzionamento di quel piccolo script per gestire lo slider lasciandomi in sostanza un div vuoto. Come puoi vedere mi ritrovo anche 2 richiami alla lib di jquery e siccome ho bisogno che sia sempre presente per far girare lo slider mi piacerebbe trovare il modo di bloccare il richiamo dinamico di quella libreria. Il problema è che non trovo il controller e la parte di codice in cui posso fermare questo richiamo. Spero di esser stato un po' più chiaro a questo giro ;D .
Grazie in anticipo ;D
0

#4 User is offline   sensorario 

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

Posted 26 April 2012 - 06:22 PM

Ti ripeto: non devi usare il codice javascript schietto: devi passarlo ad yii che poi ci pensa lui a sistemarlo. Nel tuo caso specifico, prova con

Yii::app()->getClientScript()->registerScript('ciaomondo',"

            $('#slider').nivoSlider({
                effect:'fade',
                animSpeed: 500,
                pauseTime: 5000,
                directionNav: false, 
                directionNavHide: true,
                controlNav: false, 
                controlNavThumbs: false
            });
            $('.form').hide();           
            $('.contact').find('.toform').click(function () {
                var mail= $(this).val();
                $('#ContactForm_email').val(mail);
            $('.form').show(700);
            });

", CClientScript::POS_READY);


Ti faccio notare che non ho usato $(document).ready(); ma ho indicato che lo script che voglio registrare si deve trovare in ::POS:READY. E' la stessa cosa. Ma nel caso che ti ho mostrato, è scritto in standard Yii.
0

#5 User is offline   Sbidiguda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 18-April 12

Posted 26 April 2012 - 07:52 PM

Perfetto adesso provo anche così e domani ti faccio sapere, grazie mille ;D .
0

#6 User is offline   Sbidiguda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 18-April 12

Posted 27 April 2012 - 09:16 AM

Nada niente da fare, non funziona come mi hai suggerito. Quello scriptino non funziona e non funzona più neanche lo slider. Continuo a fare qualche prova. Grazie comunque :) .

Edit: ho risolto aggiungendo lo slider al package base di yii e inserendo:
<?php 
         Yii::app()->clientScript->registerCoreScript('jquery');
         Yii::app()->clientScript->registerCoreScript('nivo');
         Yii::app()->getClientScript()->registerScript('cfg',"

            $('#slider').nivoSlider({
                effect:'fade',
                animSpeed: 500,
                pauseTime: 5000,
                directionNav: false, 
                directionNavHide: true,
                controlNav: false, 
                controlNavThumbs: false
            });
            $('.form').hide();           
            $('.contact').find('.toform').click(function () {
                var mail= $(this).val();
                $('#ContactForm_email').val(mail);
            $('.form').show(700);
            });

", CClientScript::POS_READY);
         ?>

Funziona tutto perfettamente e spero che sia in "standard yii" messa giù così ;D. Grazie ancora per l'aiuto e i suggerimenti ;D.
0

#7 User is offline   proid 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 96
  • Joined: 11-February 11
  • Location:Italy - Sassari

Posted 28 April 2012 - 01:16 AM

Deve essere yii a includere nell'header gli script che ti servono non devi metterli brutalmente tu perchè si accavallano ad esempio con jquery già usato da yii.io mi sono fatto una cartella packages nella webroot e là ho messo tutti gli script js/css, poi nel file di configurazione di yii (sezione components di main.php) devi dichiarare la posizione degli script (puoi anche sostituire jquery di yii con una versione più recente... ma prova se è compatibile con yii)
Nota che ad esempio jqueryui dipende da jquery e lo specifichi con il parametro 'depends'


		'clientScript' => array(
			'packages' => array(
				'jquery' => array(
					'baseUrl' => '/packages/jquery-1.7.2.min',
					'js' => array(
						'jquery-1.7.2.min.js',
					),
				),
				'jquery-ui' => array(
					'baseUrl' => '/packages/jquery-ui-1.8.18.custom',
					'js' => array(
						'js/jquery-ui-1.8.18.custom.min.js',
						'development-bundle/ui/i18n/jquery-ui-i18n.js',
					),
					'css' => array(
						'css/ui-lightness/jquery-ui-1.8.18.custom.css'
					),
					'depends' => array(
						'jquery'
					),
				),
				'bootstrap' => array(
					'baseUrl' => '/packages/twitter-bootstrap-2.0.2',
					'js' => array(
						'js/bootstrap.min.js',
					),
					'css' => array(
						'css/bootstrap.min.css',
						'css/bootstrap-responsive.min.css',
					),
					'depends' => array(
						'jquery'
					),
				),
			),



Poi per inserirli nella view io personalmente ho ridefinito il controller aggiungendo un filtro comune a tutte le actions che include gli script che sicuramente mi servono

 	public function filters()	{		return array(			'initScriptComuni');	} 

	public function filterInitScriptComuni($filterChain)
	{
		Yii::app()->getClientScript()->registerCoreScript("jquery");
		Yii::app()->getClientScript()->registerCoreScript("jquery-ui");
		Yii::app()->getClientScript()->registerCoreScript("bootstrap");
		$filterChain->run();
	}



Infine se nella action specifica ti serve un css o uno script specifico lo aggiungi, ma ricordati che lo devi sempre dichiarare nel main.php

Yii::app()->getClientScript()->registerCoreScript("altroscript");



if(Yii::app()->user->username=='proid') echo "Hello me!"; else echo "Proid";
0

#8 User is offline   Sbidiguda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 18-April 12

Posted 28 April 2012 - 08:38 AM

Si più o meno è quello che ho fatto, anche se non ho modificato il controller come hai fatto te. Ho semplicemente aggiunto
'nivo'=>array(
                'js'=>array('nivo-slider/jquery.nivo.slider.pack.js'),
                'depends'=>array('jquery'),
        ),

a package.php, Per poi richiamare gli script con registerCoreScript.Comunque come ho detto sopra adesso funziona tutto, piano piano imparerò anche io si spera ;D.
Grazie ancora a tutti ;D.

P.s: che voi sappiate c'è un extension o un plugin per creare un menu ad albero che non si appoggi al db ma come struttura prenda quella di una cartella?
0

#9 User is offline   proid 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 96
  • Joined: 11-February 11
  • Location:Italy - Sassari

Posted 28 April 2012 - 09:27 AM

Scusa non ho ben capito cosa intendi per prendere da una cartella.
Prova a guardare bootstrap, ha tutto una serie completa di componenti omogenei che insieme a jquery e jqueryui dovrebbe essere sufficiente per tutte le esigenze principali (tra cui i menu).
ciao
if(Yii::app()->user->username=='proid') echo "Hello me!"; else echo "Proid";
0

#10 User is offline   Sbidiguda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 18-April 12

Posted 28 April 2012 - 10:28 AM

 proid, on 28 April 2012 - 09:27 AM, said:

Scusa non ho ben capito cosa intendi per prendere da una cartella.
Prova a guardare bootstrap, ha tutto una serie completa di componenti omogenei che insieme a jquery e jqueryui dovrebbe essere sufficiente per tutte le esigenze principali (tra cui i menu).
ciao

In pratica i nodi dell'albero devono corrispondere alle sottocartelle di una determinata directory. Bootstrap lo stavo guardando sembra molto carino ;D.
0

#11 User is offline   sensorario 

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

Posted 29 April 2012 - 10:36 AM

Per risalire alla struttura di una cartella ti servono solo un paio di funzioni: opendir e readdir. Non credo sia necessaria un'estensione.
0

#12 User is offline   Sbidiguda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 18-April 12

Posted 29 April 2012 - 02:33 PM

Per ora ho fatto una semplice classe di prova usando scandir, i risultati non sembrano male. Se funziona poi provo ad estendere un widget, almeno imparo anche a creare estensioni o altro per yii ;D.
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