Я использую виджет Kartik DepDrop для выпадающих опций. Я успешно показываю варианты.
Но я получил ошибку в моей консоли Firebug, как это
TypeError: invalid 'in' operand obj
Вот мой код:
<?php
<div class="pib-data-form">
<?php $form = ActiveForm::begin(); ?>
<?php echo $form->field($model, 'transaction_type')->dropDownList(PibTransactionType::getOptions(), ['id' => 'parent_id']); ?>
<?=
$form->field($model, 'doc_type')->widget(DepDrop::classname(), [
'type' => DepDrop::TYPE_SELECT2,
'options' => ['id' => 'first_child_id'],
'pluginOptions' => [
'depends' => ['parent_id'],
'placeholder' => 'Select...',
'url' => Url::to(['pib-data/document-type'])
]
]);
?>
<?php
echo FileInput::widget([
'name' => 'file_uploads',
'language' => 'id',
'options' => [
'accept' => 'doc/*', 'file/*',
'multiple' => true,
'enableLabel' => true,
],
'pluginOptions' => [
'allowedFileExtensions' => ['xls', 'xlsx'],
'uploadUrl' => Url::to(['/pib/pib-data/create']),
]
]);
?>
<?php ActiveForm::end(); ?>
</div>
<?php
$this->registerJS("$('#w1').on('fileuploaded', function(event, data, previewId, index) {
var response = data.response;
$(location).attr('href', response.url);
}
);", View::POS_END);
public function actionDocumentType() {
$out = [];
if (isset($_POST['depdrop_parents'])) {
$parents = $_POST['depdrop_parents'];
if ($parents != null) {
$parent_id = $parents[0];
$out = PibDocumentType::getOptionsbyTransactionType($parent_id);
echo Json::encode(['output' => $out, 'selected' => '']);
return;
}
}
echo Json::encode(['output' => '', 'selected' => '']);
}
TransactionType.php
public static function getOptions(){
$data= static::find()->all();
$value=(count($data)==0)? [''=>'']: \yii\helpers\ArrayHelper::map($data, 'id','name');
return $value;
}
DocumentType.php
public static function getOptionsbyTransactionType($parent_id) {
$data = static::find()->where(['transaction_type_id'=>$parent_id])->select(['id','name'])->asArray()->all();
$value = (count($data) == 0) ? ['' => ''] : $data;
return $value;
}
Что означает ошибка и как ее исправить?
Задача ещё не решена.
Других решений пока нет …