YII select с динамическим контентом

53
На сайте с 10.09.2011
Offline
28
884

Сделал по инструкции. Помогите пожалуйста, ошибку найти. Присваивается постоянно check_admin_company_fk=1 и передается во второй селект, остальные ключи других компаний не видит буд-то бы.

 echo $form->dropDownList($model,'check_admin_company_fk', CompanyAdmin::alladmin(),

array(
'options' => array('2'=>array('selected'=>true)),
'ajax' => array(
'type'=>'GET',
'url'=>CController::createUrl('/dynamicBanks/', array('id' => $model->check_admin_company_fk) ), //url to call.
'update'=>'#check_admin_company_fk',
)));
echo $form->error($model,'check_admin_company_fk');

Напрямую проверил урлы

http://localhost/dynamicBanks/id/1.html

http://localhost/dynamicBanks/id/2.html

Данные отдает, а в селект второй не передает то что в id=2. Указал жестко селектетед с ид=2 и тоже не показывает во втором селекте

TF-Studio
На сайте с 17.08.2010
Offline
334
#1
Сделал по инструкции.

По какой:?

Оч интересные URL

Что в самой модели формы есть?

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
53
На сайте с 10.09.2011
Offline
28
#2

По

http://www.yiiframework.com/wiki/24/"] этойсделал.

Потом отрыл эту

эту. Но она только первую расширяет, украшения только добавляет, такие как сообщение в селекте, но суть не решает.

Вот мой динамик экшн результирующий:

        public function actionDynamicBanks()

{
$id=(int)$_GET[ ' id '];
$data=Bank::model()->findAll('bank_admin_company_fk=:id', array(':id'=>$id));

$data=CHtml::listData($data,'bank_id','bank_name');
echo "<option value=''>Название банка</option>";
if(!empty($data))
foreach($data as $value=>$name)
{
echo CHtml::tag('option',
array('value'=>$value),CHtml::encode($name),true);
}
else echo CHtml::tag('option',
array('value'=>'0'),CHtml::encode('0'),true);

}

Потом эту попробовал возпроизвести. С виду даже таблици создают в базе, полагал то проект стартануть должен с "пол пинка". Но там тоже засада, в какой из файлов "_from.php" неизвестно вставлять код.


'url'=>CController::createUrl('/dynamicBanks/', array('id' => $model->check_admin_company_fk) ),

Вот тут я так понимаю должно селектыд передавать а не ключ модели. нет?

Допустим пишу так без модели:

'url'=>CController::createUrl('/dynamicBanks/', array('id' => 1) ),

Получаю первую запись как и выше. Пишу так:

'url'=>CController::createUrl('/dynamicBanks/', array('id' => 2) ),

тогда в селект удается все таки вставить то что было во второй записи.

как селектед передать?

53
На сайте с 10.09.2011
Offline
28
#3

Капец, сколько сайтов надо перелапатить что бы понять... два дня почти ковырялся что бы добится, что бы сделать именно через Yii средства. И все таки сделал. На ответ натолкнул этот пост - открыть

  echo $form->dropDownList($model,'check_admin_company_fk', CompanyAdmin::alladmin(),

array(

'ajax' => array(
'type'=>'GET',
'url'=>CController::createUrl('/dynamicBanks' ),

'update'=>'#bank_id',
'data'=>array('id'=>'js:this.value'),
)));

Вот тут надо было передавать айдишник 'data'=>array('id'=>'js:this.value'), и всегото. а с урл убрать, я подсознательно понимал что ид где-то должен передаватся, вот и подумал что по типичному к урл добавить... и "лепил")).

Передаются теперь id. Только вопрос, что это значит за параметр с подчеркиванием?

?id=2&_=1432925676812
Staid
На сайте с 30.07.2014
Offline
59
#4

550953, вам лучше на их форуме общаться, быстрее ответ получите.

http://yiiframework.ru/forum/

53
На сайте с 10.09.2011
Offline
28
#5

в том то и проблема что на этом форуме быстрей чем там.

У меня вот еще такой:

У меня второй селект показывает вот такое

name="check_admin_bank_fk"

Что нужно тут поменять

echo CHtml::dropDownList('check_admin_bank_fk','', Bank::IdBankForIdCompany($model->check_admin_bank_fk)                    );

что бы вышло такое во втором селекте?

name="Check[check_admin_bank_fk]"

Пробовал вот такое:

echo CHtml::activeDropDownList($model, 'check_admin_bank_fk', Bank::IdBankForIdCompany($model->check_admin_bank_fk)); 

Но в него динамически не передает тогда с первого селекта, только то что по дефолту подгрузилось и усе.

53
На сайте с 10.09.2011
Offline
28
#6

        protected function beforeSave() {

if(parent::beforeSave()) {
if(isset($_POST['check_admin_bank_fk'])){
echo $this->check_admin_bank_fk = $_POST['check_admin_bank_fk'];
}
}
}

Вот так написал в модели, тогда во view не переходит, просто обновляется страница с формой редактирования и в ней задано то что выбирал. Но когда перехожу во вьею или в admin страницу тогда там вижу что ничего не поменялось

---------- Добавлено 30.05.2015 в 15:34 ----------

protected function afterSave() {

parent::afterSave();

if(isset($_POST['check_admin_bank_fk'])){

echo $this->check_admin_bank_fk = $_POST['check_admin_bank_fk'];

$this->save();

}

вместо того, вот так заработало сохранение . подсмотрел тут

TF-Studio
На сайте с 17.08.2010
Offline
334
#7

Личный бложЭ на серче?

L
На сайте с 10.02.2015
Offline
249
#8

Зачем Вы вообще выбрали Yii?

TF-Studio
На сайте с 17.08.2010
Offline
334
#9

Yii - шикарная вещь в умелых руках, оч быстро можно собрать прототип

DiAksID
На сайте с 02.08.2008
Offline
236
#10
livetv:
Зачем Вы вообще выбрали Yii?

например, из-за того, что остальные PHP-костыли вообще убогая муйня...

show must go on !!!...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий