Yii Framework Forum: [RISOLTO] CJuiAutoComplete - Yii Framework Forum

Jump to content

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

[RISOLTO] CJuiAutoComplete Rate Topic: -----

#1 User is offline   Giuseppe 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 38
  • Joined: 25-February 11
  • Location:Roma

Posted 12 December 2011 - 06:52 AM

Ciao a tutti,
sto cercando di far funzionare e mettere in opera questo esempio:

http://www.yiiplaygr...ziiAutocomplete

ma proprio non vuole andare :)

Allora in protected/views/site/giuseppe.php

ho aggiunto questo


$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
	'name'=>'test1',
	//'value'=>'test21',
        'source'=>$this->createUrl('anagrafica/autocompleteTest'),
       	// additional javascript options for the autocomplete plugin
	'options'=>array(
			'showAnim'=>'fold',
	),
));
 




mentre nel controller in protected/controllers/AnagraficaController.php
ho aggiunto questo:


public function actionAutocompleteTest() {
	$res =array();

	if (isset($_GET['term'])) {
		// http://www.yiiframework.com/doc/guide/database.dao
		$qtxt ="SELECT cognome FROM {{Anagrafica}} WHERE cognome LIKE :cognome";
		
                $command =Yii::app()->db->createCommand($qtxt);
		$command->bindValue(":cognome", '%'.$_GET['term'].'%', PDO::PARAM_STR);
		$res =$command->queryColumn();
	}

	echo CJSON::encode($res);
	Yii::app()->end();
        }



ma non va nulla.... :)
Se provo a scrivere qualcosa non succede nulla, ma firebugs di chrome mi da questo:



GET http://localhost/yii/cartella/index.php?r=anagrafica/autocompleteTest&term=ba 403 (CHttpException)




Cosa mi sfugge..? ciao e grazie
Giuseppe


ps ho provato cosi direttamennte nella view è funge.
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
        'name'=>'test2',
        'source'=>array('ac1', 'ac2', 'ac3'),
));

0

#2 User is offline   sensorario 

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

Posted 12 December 2011 - 08:41 PM

A me sembra ci sia un errore di permessi nella pagina che viene richiamata via ajax.

Prova ad aggiungere 'autocompleteTest' alla parte che abilita TUTTI gli utenti:

    public function accessRules() {
        return array(
            ...
            array('allow', // allow all users to perform 'index' and 'view' actions
                'actions' => array('index', 'view', 'autocompleteTest'),
                'users' => array('*'),
            ),
            ...
        );
    }

1

#3 User is offline   Giuseppe 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 38
  • Joined: 25-February 11
  • Location:Roma

Posted 13 December 2011 - 05:58 AM

Ciao Simone e grazie,
nulla non va nemmeno così...
il debug javascript mi da sempre:

GET http://localhost/yii/cartella/index.php?r=anagrafica/autocompleteTest&term=p 403 (CHttpException)



pensavo ma quella variabile term che vedo in querystring non dovrei scriverla nella query che ho nel controller?

public function actionAutocompleteTest() {
        $res =array();

        if (isset($_GET['term'])) {
                // http://www.yiiframework.com/doc/guide/database.dao
                $qtxt ="SELECT cognome FROM {{Anagrafica}} WHERE cognome LIKE :cognome";
                
                $command =Yii::app()->db->createCommand($qtxt);
                $command->bindValue(":cognome", '%'.$_GET['term'].'%', PDO::PARAM_STR);
                $res =$command->queryColumn();
        }

        echo CJSON::encode($res);
        Yii::app()->end();
        }


buona giornata e grazie
Giuseppe
0

#4 User is offline   sensorario 

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

Posted 16 December 2011 - 05:17 AM

Si fa complicata la faccenda. Hai provato a fare un log per vedere che cosa ti arriva nella variabile _GET?
0

#5 User is offline   Giuseppe 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 38
  • Joined: 25-February 11
  • Location:Roma

Posted 16 December 2011 - 11:02 AM

grande sensorario
ho appena risolto era in effetti un problema di permessi...
e tu me lo avevi pure detto di metterlo nella parte che abilita tutti gli utenti!
ma nella prova che avevo fatto prima forse sbagliavo qualche altra cosa..
non lo so ma ti giuro che stavo per prendere qualche psicofarmaco... per colpa di sta ricerca :)
era cmq come dicevi:

Per chi avesse lo stesso problema, lo script di sopra sia del controller che della view è valido, rimane da inserire solo il nome "autocompleteTest" in tutte e tre le regole e così funziona!!

    public function accessRules() {
        return array(
            array('allow', // allow all users to perform 'index' and 'view' actions
                'actions' => array('index', 'view','autocompleteTest'),
                'users' => array('*'),
            ),
            array('allow', // allow authenticated user to perform 'create' and 'update' actions
                'actions' => array('create', 'update','autocompleteTest'),
                'users' => array('@'),
            ),
            array('allow', // allow admin user to perform 'admin' and 'delete' actions
                'actions' => array('admin', 'delete', 'cancellaAvatar','autocompleteTest'),
                'roles' => array('Admin'),
            ),
            array('deny', // deny all users
                'users' => array('*'),
            ),
        );
    }




prima lo mettevo solo qui come pensavo fosse logico, visto che ero autenticato..

  array('allow', // allow admin user to perform 'admin' and 'delete' actions
                'actions' => array('admin', 'delete', 'cancellaAvatar','autocompleteTest'),
                'roles' => array('Admin'),


è invece pensavo male...
ora capirò anche il perchè...
e mi studierò pure il log, che magari mi evitava di impazzire!

ora rimane che inserire un bel pulsante ricerca, e a tal proposito..
c'è qualche esempio che posso vedere..?
grazie ancora
Giuseppe
0

#6 User is offline   sensorario 

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

Posted 16 December 2011 - 12:06 PM

Provo a dirtelo io:

    public function accessRules() {
        return array(
            array('allow|deny', // allow all users to perform 'index' and 'view' actions
                'actions' => array('index', 'view','autocompleteTest'),
                'users' => array('*'),
            ),
            array('allow', // allow authenticated user to perform 'create' and 'update' actions
                'actions' => array('create', 'update','autocompleteTest'),
                'users' => array('@'),
            ),
            array('allow',
                'actions' => array('admin', 'delete', 'cancellaAvatar','autocompleteTest'),
                'roles' => array('Admin'),
            ),
            array('deny', // disabiliti tutti
                'users' => array('*'),
            ),
        );
    }


'users' => array('*') = tutti gli utenti
'users' => array('@') = gli utenti loggati
'users' => array('admin') = esattamente l'utente con username uguale a "admin"

'roles' => array('Admin') = esattamente gli utenti che hanno ruolo "Admin" o superiore

i ruoli esistono dal momento che usi un sistema RBAC = Role Based Access Control.
1

#7 User is offline   paskuale 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 385
  • Joined: 30-December 11
  • Location:Italy, Bari

Posted 18 January 2012 - 07:40 AM

Ottimo esempio, però una domanda:

Se il valore contenuto nel controllo lo devo assegnare ad una proprietà del mio activeRecord ? Come faccio ? Ho controllato il db mi passa NULL !!

Il valore di ritorno del controllo dov'è ? :mellow:
grazie :rolleyes:
0

#8 User is offline   paskuale 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 385
  • Joined: 30-December 11
  • Location:Italy, Bari

Posted 22 January 2012 - 11:43 AM

Ok mi autoreplico, qui ho pubblicato una guida completa per questo controllo ::)
1

#9 User is offline   Giancarlo 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 242
  • Joined: 20-December 11
  • Location:Turin, Italy

Posted 05 September 2012 - 09:23 AM

Ottima guida Paskuale, l'ho trovata molto utile, anche se non ha risolto completamente la mia esigenza.
Riprendendo il tuo esempio in cui vai a creare un elenco di comuni auto-completante,
io ho l'esigenza di voler aggiungere sopra una combobox contenente l'elenco delle regioni.
E a seconda della regione scelta, il comune auto completante deve mostrare solo i risultati pertinenti (cioè filtrare anche per regione)

Ora, il codice per la regione da aggiungere nel _form.php sarebbe una cosa del genere:
<?php echo $form->labelEx($model,'Regione'); ?>
<?php echo $form->dropDownList($model,'Regione',CHtml::listData(RegioniTable::model()->findAll(array('order'=>'Regione')), 'Regione', 'Regione'),
array(
	'prompt'=>'',
	'style'=>'text-transform: uppercase;',
)); ?>


ma come posso modificare zii.widgets.jui.CJuiAutoComplete affinché invii tramite 'source'=>$this->createUrl() anche il campo Regione?
Posted Image Non preoccuparti, è dentro il monitor!

Sapevi che cercando su google yii + "la funzione su cui stai impazzendo", trovi quasi sempre dei buoni indizi in italiano, per risolvere i tuoi problemi, senza perdere tempo a postare?
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