Grazie in anticipo
dipendenza webapp sono un po' confuso
#1
Posted 24 April 2012 - 08:55 AM
Grazie in anticipo
#2
Posted 24 April 2012 - 06:20 PM
Se vuoi caricare del codice javsascript, devi passare per:
Yii::app()->getClientScript()->registerScript('nome', '
alert("!!!!");
');
#3
Posted 26 April 2012 - 07:33 AM
sensorario, on 24 April 2012 - 06:20 PM, said:
Se vuoi caricare del codice javsascript, devi passare per:
Yii::app()->getClientScript()->registerScript('nome', '
alert("!!!!");
');
Grazie per la risposta
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
Grazie in anticipo
#4
Posted 26 April 2012 - 06:22 PM
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.
#5
Posted 26 April 2012 - 07:52 PM
#6
Posted 27 April 2012 - 09:16 AM
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ì
#7
Posted 28 April 2012 - 01:16 AM
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";
#8
Posted 28 April 2012 - 08:38 AM
'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
Grazie ancora a tutti
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?
#9
Posted 28 April 2012 - 09:27 AM
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";
#10
Posted 28 April 2012 - 10:28 AM
proid, on 28 April 2012 - 09:27 AM, said:
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
#11
Posted 29 April 2012 - 10:36 AM
#12
Posted 29 April 2012 - 02:33 PM

Help














