Problema tag-it non funziona

Ciao a tutti

Non riesco a far funzionare tag-it assieme al widget datepicker.

in pratica se non uso il widget datepicker dentro la pagina mi funziona il tag-it con AUTOCOMPLETE, invece quando inserisco anche il widget mi funziona però non mi fa AUTOCOMPLETE da remoto.





<html>

<head>


    <!-- These 2 CSS files are required: any 1 jQuery UI theme CSS, plus the Tag-it base CSS. -->

    <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/flick/jquery-ui.css">

    <link rel="stylesheet" type="text/css" href="css/jquery.tagit.css">


    <!-- jQuery and jQuery UI are required dependencies. -->

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript" charset="utf-8"></script>

    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js" type="text/javascript" charset="utf-8"></script>


    <!-- The real deal -->

	<script src="js/tag/tag-it.js" type="text/javascript"></script>


	<script>

	    $(document).ready(function(){


            $('#allowSpacesTags').tagit({

            	tagSource: 'index.php?r=tag/json',

                allowSpaces: true

            });


	    });

	</script>


</head>

<body>


  

	<ul id="allowSpacesTags"></ul>




	<div class="form">

	

	<?php $form=$this->beginWidget('CActiveForm', array(

	    'id'=>'form',

	    'enableAjaxValidation'=>true,

	)); ?>

	

	    <p class="note">Fields with <span class="required">*</span> are required.</p>

	

	    <?php echo $form->errorSummary($model); ?>

	

	    <div class="row">

	        <?php echo $form->labelEx($model,'date'); ?>

	        <?php         

	       $this->widget('zii.widgets.jui.CJuiDatePicker', array(

			    	'model'=>$model, 

			 	'attribute' => 'date',

			    	'language' => 'it',

			        'options'=>array(  

			        	'dateFormat'=>'dd/mm/yy',

						'changeMonth' => 'true',

						'changeYear' => 'true',

			            'showButtonPanel' => 'true',

			            'constrainInput' => 'false',

			            'showAnim' =>'slideDown'

			    	),

			    	'htmlOptions'=>array(

				       'class'=>'date'

				    ),

	 	 ));

	        ?>

	        <?php echo $form->error($model,'date'); ?>

	    </div>

	

	    <div class="row">

	        <?php echo $form->labelEx($model,'title'); ?>

	        <?php echo $form->textField($model,'title'); ?>

	        <?php echo $form->error($model,'title'); ?>

	    </div>

	

	    <div class="row">

	        <?php echo $form->labelEx($model,'description'); ?>

	        <?php echo $form->textArea($model,'description'); ?>

	        <?php echo $form->error($model,'description'); ?>

	    </div>

	

	    <div class="row">

	        <?php echo $form->labelEx($model,'source_id'); ?>

	        <?php echo $form->DropDownList($model,'source_id', $dropdown);?>

	        <?php echo $form->error($model,'source_id'); ?>

	    </div>

	

	    <div class="row">

	        <?php echo $form->labelEx($model,'inserted_on'); ?>

	        <?php echo $form->textField($model,'inserted_on'); ?>

	        <?php echo $form->error($model,'inserted_on'); ?>

	    </div>

	    

    	</div>

	

	

	    <div class="row buttons">

	        <?php echo CHtml::submitButton('Submit'); ?>

	    </div>

	

	<?php $this->endWidget(); ?>

	</div>

</body>

</html>






Non devi mettere il codice javascript "schietto". Devi registrarlo secondo lo standard yii:


Yii::app()->getClientScript()->registerScript('nome-dello-script', '


 // qui ci metti il codice javascript


', CClientScript::POS_END); // qui indichi la posizione

Hai un comportamento strano, perchè anche yii include jquery e probabilmente tu con





        <script>

            $(document).ready(function(){


            $('#allowSpacesTags').tagit({

                tagSource: 'index.php?r=tag/json',

                allowSpaces: true

            });


            });

        </script>




Sovrascrivi il $(document).ready( … di yii. Lo stesso vale per l’inclusione del file javascript: non deve avvenire a mano, ma deve rigorosamente essere incluso attraverso il metodo che ti dicevo prima. Bisogna controllare la documentazione per questo. Si possono includere script presenti nel core con registerCoreScript (per esempio per jQuery). Ma puoi anche inserire semplici script o file esterni.

Ho modificato come mi hai detto però mi non mi funziona lo stesso


<?php 

            Yii::app()->getClientScript()->registerCssFile('http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/flick/jquery-ui.css');

            Yii::app()->getClientScript()->registerCssFile('css/jquery.tagit.css');


	    Yii::app()->getClientScript()->registerScriptFile('http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js');

	    Yii::app()->getClientScript()->registerScriptFile('https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js');

	    Yii::app()->getClientScript()->registerScriptFile('js/tag/tag-it.js');

			

            Yii::app()->getClientScript()->registerScript('allowSpacesTags', '

            $("#allowSpacesTags").tagit({

                tagSource: "index.php?r=tag/json",

                allowSpaces: true

            });

            ', CClientScript::POS_END); // qui indichi la posizione


?>  

in firebug quando DATEPICKER non c’è mi mostra


GET index.php?r=tag/json&term=mer

invece quando c’è il widget datepicker, non mi mostra niente.

Ti chiedo di essere più esplicito:

vorrei che ci dicessi la quersystring, e che ci mostrassi il codice di tutta la view.

Ecco il codice della view


<html>

<head>




<?php 

            Yii::app()->getClientScript()->registerCssFile('http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/flick/jquery-ui.css');

            Yii::app()->getClientScript()->registerCssFile('css/jquery.tagit.css');


	    Yii::app()->getClientScript()->registerScriptFile('http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js');

	    Yii::app()->getClientScript()->registerScriptFile('https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js');

	    Yii::app()->getClientScript()->registerScriptFile('js/tag/tag-it.js');

			

            Yii::app()->getClientScript()->registerScript('allowSpacesTags', '

                $("#allowSpacesTags").tagit({

                   tagSource: "index.php?r=tag/json",

                   allowSpaces: true

                });

            ', CClientScript::POS_END); 

?>  


</head>

<body>


	<ul id="allowSpacesTags"></ul>

	

	

	<div class="form">

	

	<?php $form=$this->beginWidget('CActiveForm', array(

	    'id'=>'form',

	    'enableAjaxValidation'=>true

	)); ?>

	

	    <p class="note">Fields with <span class="required">*</span> are required.</p>

	

	    <?php echo $form->errorSummary($model); ?>

	

	    <div class="row">

	        <?php echo $form->labelEx($model,'date'); ?>

<?php $this->widget('zii.widgets.jui.CJuiDatePicker', array(

			    	'model'=>$model, 

			 	 	'attribute' => 'date',

			    	'language' => 'it',

			        'options'=>array(  

			        	'dateFormat'=>'dd/mm/yy',

						'changeMonth' => 'true',

						'changeYear' => 'true',

			            'showButtonPanel' => 'true',

			            'constrainInput' => 'false',

			            'showAnim' =>'slideDown'

			    	),

	  ));

?>

	        <?php echo $form->error($model,'date'); ?>

	    </div>

	

	    <div class="row">

	        <?php echo $form->labelEx($model,'title'); ?>

	        <?php echo $form->textField($model,'title'); ?>

	        <?php echo $form->error($model,'title'); ?>

	    </div>

	

	    <div class="row">

	        <?php echo $form->labelEx($model,'description'); ?>

	        <?php echo $form->textArea($model,'description'); ?>

	        <?php echo $form->error($model,'description'); ?>

	    </div>

	

	    <div class="row">

	        <?php echo $form->labelEx($model,'source_id'); ?>

	        <?php echo $form->DropDownList($model,'source_id', $dropdown);?>

	        <?php echo $form->error($model,'source_id'); ?>

	    </div>

		

	    <div class="row buttons">

	        <?php echo CHtml::submitButton('Submit'); ?>

	    </div>

	

	<?php $this->endWidget(); ?>

	</div>

	</body>

	</html>

Quando inserisco questo parte di codice non mi funziona AUTOCOMPLETE di TAG-IT


<?php $this->widget('zii.widgets.jui.CJuiDatePicker', array(

			    	'model'=>$model, 

			 	 	'attribute' => 'date',

			    	'language' => 'it',

			        'options'=>array(  

			        	'dateFormat'=>'dd/mm/yy',

						'changeMonth' => 'true',

						'changeYear' => 'true',

			            'showButtonPanel' => 'true',

			            'constrainInput' => 'false',

			            'showAnim' =>'slideDown'

			    	),

	  ));

?>



La richiesta per autocomplete è inserito nel javascript in alto.


tagSource: "index.php?r=tag/json",

Ho visto che c’è anche una estenzione taggable che fa la stessa cosa http://www.yiiframework.com/extension/taggable/ ma non ho idea di come farlo funzionare.

Ho una tabella in DB chiamata tags; Voglio prendere i tag facendo autocomplete con i description presenti in essa.

Ecco lo screenshot di quello che stavo dicendo.

in questa screenshoot in alto non c’è il widget datepicker.

Mmmm mi mostreresti il codice renderizzato? Ovvero il codice che vede il browser.

Ho risolto usando il widget Tag-it che si trova a questa pagina.

http://con.cept.me/blog/post/2/yii-tag-it-widget

Questo widget mi dava errore.

Ho corretto il file che si trova in VIEW del widget

la righa


$jui=Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('zii.vendors.jui').'/js/jquery-ui.min.js');

CON


$jui=Yii::app()->clientScript->getCoreScriptUrl().'/jui/js'.DIRECTORY_SEPARATOR.'jquery-ui.min.js'; 

.