Yii Framework Forum: Cjuiautocomplete Nie Działa Na Serwerze? - Yii Framework Forum

Jump to content

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

Cjuiautocomplete Nie Działa Na Serwerze? Rate Topic: -----

#1 User is offline   Jarek 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 35
  • Joined: 06-May 13

Posted 19 November 2013 - 12:59 PM

Witam,

Mam takie pole z podpowiedzią:

$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
    'name' => 'nazwa',
    //'value' => 'nazwa21',
    'source' => $this->createUrl('site/autocompleteTest'),
    // additional javascript options for the autocomplete plugin
    'options' => array(
        'minLength' => '4', //2
        'showAnim' => 'fold',
    ),
));



do tego metode w siteController:

public function actionAutocompleteTest() {
        $res = array();       
        if (isset($_GET['term'])) {
            // http://www.yiiframework.com/doc/guide/database.dao
            $qtxt = "SELECT nazwa FROM tbl_miasta WHERE nazwa LIKE :nazwa and id_wojewodztwo =:id_wojewodztwo";
            //$qtxt = "SELECT id FROM tbl_miasta WHERE id = 879";
            $command = Yii::app()->db->createCommand($qtxt);
            $command->bindValue(":nazwa", '%' . $_GET['term'] . '%', PDO::PARAM_STR);            
            $command->bindValue(":id_wojewodztwo", 12, PDO::PARAM_INT); //?
            //echo $_GET['term'];            
            $res = $command->queryColumn();
        }
        echo CJSON::encode($res);
        Yii::app()->end();
    }


metoda znajduje miasta w konsoli widzę właściwe miasto (gdy stronka działa na localhoscie wszystko śmiga ale gdy wrzucę na serwer np. home.pl autocomplete nie działa nie wyświetla się rezultat w tym polu tekstowy. Gdzie popełniłem błąd że ten autocomplete nie działa?

Pozdrawiam
Jarek
0

#2 User is offline   nineinchnick 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 622
  • Joined: 12-September 11
  • Location:Bialystok, Poland

Posted 19 November 2013 - 01:28 PM

Czy na home.pl masz włączone automatyczne dodawanie skryptu do statystyk do każdej odpowiedzi? Jeśli tak, to wypluwana przez akcję odpowiedź po odebraniu przez widget nie jest już prawidłowym JSONem.

Tak czy inaczej, co pokazuje Firebug lub podobne narzędzie? Request jest wykonywany? Jak wygląda odpowiedź?
Don't be a dick.
0

#3 User is offline   Jarek 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 35
  • Joined: 06-May 13

Posted 19 November 2013 - 03:24 PM

Tak miałem włączone automatyczne dodawanie skryptu do statystyk do każdej odpowiedzi,wystarczyło to odznaczyć i poszło, a mam jeszcze jedno pytanie wybieram z listy rozwijalnej element chciałem jego id zapisać w zmiennej np:
public $moje_id;

// getter
    public function getMoje_id() {
        return $this->moje_id;
    }

    // setter
    public function setMoje_id($value) {
        $this->moje_id = $value;
    }



oraz dropdown:
echo CHtml::dropDownList('nazwa1', ' ', $list, array(
    'class' => 'chzn-select',
    'empty' => 'Wybierz wojewodztwo',
    'ajax' => array(
        'type' => 'POST',
        'url' => array('miasta/listaMiast'),        
        'data' => array('nazwa1' => 'js:this.value',),
   
    )
));


w metodzie:
public function actionListaMiast() {
       
        if (isset($_POST['nazwa1']))            
            $wart = (int) $_POST['nazwa1'];
            $this->setMoje_id($wart);
}


ustawiam zmienna jest ok ale gdy próbuje ja odczytać ma wartość null, pobieram dane:

  public function actionAutocompleteTest() {
              
        $value = $this->getMoje_id();
}


ale wartość ma null, jak rozwiązać ten problem?

Pozdrawiam
Jarek
0

#4 User is offline   nineinchnick 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 622
  • Joined: 12-September 11
  • Location:Bialystok, Poland

Posted 19 November 2013 - 04:41 PM

Próbujesz przypisać wartość właściwości kontrolera w jednym żądaniu a potem odczytać ją w kolejnym? Przecież każde przetwarzane żądanie w PHP jest od siebie odizolowane. Mógłbyś zapamiętać to np. w sesji albo bazie danych albo współdzielonym cache ale będziesz miał problem jeśli kilka żądań będzie wywołanych równolegle.

Żeby filtrować wyniki pola autocomplete po wartości listy rozwijanej dodaj tą wartość do żądania odpalanego przez autocomplete. Żeby to zrobić, musisz zamiast url w parametrze source podać funkcję. Odsyłam do dokumentacji jQuery UI Autocomplete.

Bardzo zgrubny przykład:
'source'=>'js:function(request, response) {
            $.ajax({
                url: '.$this->createUrl('site/autocompleteTest').',
                data: request,
                dataType: \'json\'
            }).success(function(data) {
                response(data);
            });
        }'

Don't be a dick.
0

#5 User is offline   Jarek 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 35
  • Joined: 06-May 13

Posted 21 November 2013 - 07:32 AM

Dzięki za wyczerpującą odpowiedź, mój kod dokładnie wygląda tak i działa:

$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
    'name' => 'nazwa',    
    'source'=>'js:function(request,response){
        $.ajax({
            url: "' .$this->createUrl('site/autocompleteTest').'",
            dataType: "json",
            data : {
                    term: request.term,
                    id_woj: $("#nazwa1").val() 
            },
            success: function(data) {
                response(data);
            }
         })
     }',
    'options'=>array(
        'minLength'=> '4',
    ),
    'htmlOptions' => array(
        'style' => 'height:20px;',
    ),
));


wszystko smiga że aż miło:)
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