WedX - журнал о программировании и компьютерных науках

activedropDownList не загружает функцию ajax при добавлении подсказки

У меня была проблема с yii, я создал код для вызова ajax в activedropDownList для загрузки значений в dropDownList, и все работает!

Но мои проблемы:

1- при добавлении массива («подсказка» => «Выбрать страну») Таким образом, код будет таким:

echo CHtml::activedropDownList($model,'country',$model->getcountry(),array('prompt'=>'Выберите страну'),

и результат: не работает.

Но если, когда я удалил массив («подсказка» => «Выбрать страну»), это сработает, и ajax загрузит новый список!

это мой код

Вид :

<?php
/* @var $this UsersController */
/* @var $model Users */
/* @var $form CActiveForm */
?>

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'users-index-form',
    'enableAjaxValidation'=>false,
)); ?>







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

    <div class="row">
        <?php echo $form->labelEx($model,'الأسم الأول'); ?>
        <?php echo $form->textField($model,'first_name'); ?>
        <?php echo $form->error($model,'الأسم الاول'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'العائلة'); ?>
        <?php echo $form->textField($model,'last_name'); ?>
        <?php echo $form->error($model,'العائلة'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'كلمة المرور'); ?>
        <?php echo $form->passwordField($model,'password'); ?>
        <?php echo $form->error($model,'password'); ?>
    </div>
    <div class="row">
        <?php echo $form->labelEx($model,'تأكيد كلمة المرور'); ?>
        <?php echo $form->passwordField($model,'passwordconfirm'); ?>
        <?php echo $form->error($model,'passwordconfirm'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'البريد الإلكتروني '); ?>
        <?php echo $form->textField($model,'email'); ?>
        <?php echo $form->error($model,'email'); ?>
    </div>
        <div class="row">
        <?php echo $form->labelEx($model,'تأكيد البريد الإلكتروني'); ?>
        <?php echo $form->textField($model,'emailconfirm'); ?>
        <?php echo $form->error($model,'emailconfirm'); ?>
    </div>

        <div class="row">
        <?php echo $form->labelEx($model,'تاريخ الميلاد'); ?>
    <?php

$this->widget(
    'ext.jui.EJuiDateTimePicker',
    array(
        'model'     => $model,
        'attribute' => 'birth_date',
        'language'=> 'en',//default Yii::app()->language
         'mode'    => 'date',//'datetime' or 'time' ('datetime' default)
        'options'   => array(
        'dateFormat' => 'yy-mm-dd',
            //'timeFormat' => '',//'hh:mm tt' default
        ),
    )
);


?>

        <?php echo $form->error($model,'birth_date'); ?>
    </div>





    <div class="row">
        <?php echo $form->labelEx($model,'الجنس'); ?>
        <?php echo chtml::activeDropDownList($model,'gender',$model->getStatusOption(),array('prompt'=>'أختر جنسك')
); ?>
        <?php echo $form->error($model,'gender'); ?>
    </div>

        <div class="row">
        <?php echo $form->labelEx($model,'البلد'); ?>
    <?php

    /*
     echo chtml::activeDropDownList($model,'country',$model->getcountry(),array('prompt'=>'Select your country  ')   , 
    array(
'ajax' => array(
'type'=>'POST', //request type
'url'=>CController::createUrl('current/dynamiccities'), //url to call.
//Style: CController::createUrl('currentController/methodToCall')
'update'=>'#city', //selector to update
//'data'=>'js:javascript statement' 
//leave out the data key to pass all form values through
))

    ); 

    */
    echo CHtml::activedropDownList($model,'country',$model->getcountry(),array('prompt'=>'اختر البلد أو المنطقة '),

    array(
'ajax' => array(
'type'=>'POST', //request type
'url'=>CController::createUrl('register/dynamiccities'), //url to call.
//Style: CController::createUrl('currentController/methodToCall')
'update'=>'#city', //selector to update
//'data'=>'js:javascript statement' 
//leave out the data key to pass all form values through
))
    );


   ///




    ////

    ?>


        <?php echo $form->error($model,'country'); ?>
    </div>
    <div class="row">
        <?php echo $form->labelEx($model,'المدينة'); ?>
        <?php 
       //empty since it will be filled by the other dropdown
echo CHtml::dropDownList('city','', array());

//echo CHtml::activedropDownList($model,'city',array());
 ?>
        <?php echo $form->error($model,'city'); ?>
    </div>



    <div class="row">
        <?php echo $form->labelEx($model,'رمز الاتصال'); ?>
        <?php echo $form->textField($model,'mobile_code'); ?>
        <?php echo $form->error($model,'mobile_code'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'رقم الجوال'); ?>
        <?php echo $form->textField($model,'mobile_number'); ?>
        <?php echo $form->error($model,'mobile_number'); ?>
    </div>




    <div class="row buttons">
        <?php echo CHtml::submitButton('تسجيــــــــــــل'); ?>
    </div>

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

</div><!-- form -->

Аякс-контроллер:

public function actionDynamiccities() /// Called Ajax
{
$country=intval($_POST['Users']['country']);

       $data=Cities::model()->findAll('country_id=:country_id', 
                  array(':country_id'=>$country));
 $data=CHtml::listData($data,'id','city_name_e');

    foreach($data as $value=>$name)
    {
        echo CHtml::tag('option',
                   array('value'=>$value),CHtml::encode($name),true);
    };


}  

заранее спасибо

05.12.2012

Ответы:


1

activeDropDownList Принимает только 4 аргумента.

общедоступная статическая строка activeDropDownList (CModel $model, string $attribute, array $data, array $htmlOptions=array())

Поместите 'prompt'=>'اختر البلد أو المنطقة ' в тот же массив, что и ваш код ajax.

array(
  'prompt'=>'اختر البلد أو المنطقة ',
  'ajax' => array(
    'type'=>'POST', //request type
    'url'=>CController::createUrl('register/dynamiccities'), //url to call. //Style: CController::createUrl('currentController/methodToCall')
    'update'=>'#city', //selector to update
    //'data'=>'js:javascript statement' 
    //leave out the data key to pass all form values through
  )
)
05.12.2012
Новые материалы

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


Для любых предложений по сайту: [email protected]