예제 #1
0
                            <div class="col-md-6">
                                <?php 
echo $form->field($widget->searchOfferRelatedPropertiesModel, $widget->searchOfferRelatedPropertiesModel->getAttributeNameRangeFrom($property->code))->textInput(['placeholder' => 'от'])->label($property->name . "");
?>
                            </div>
                            <div class="col-md-6">
                                <?php 
echo $form->field($widget->searchOfferRelatedPropertiesModel, $widget->searchOfferRelatedPropertiesModel->getAttributeNameRangeTo($property->code))->textInput(['placeholder' => 'до'])->label("&nbsp;");
?>
                            </div>
                        </div>
                    </div>

                <? else : ?>

                    <? $propertiesValues = \skeeks\cms\models\CmsContentElementProperty::find()->select(['value'])->where([
                        'property_id' => $property->id,
                        'element_id'  => $widget->elementIds
                    ])->all(); ?>

                    <? if ($propertiesValues) : ?>
                        <div class="form-group">
                            <div class="row">
                                <div class="col-md-12">

                                <?php 
echo $form->field($widget->searchOfferRelatedPropertiesModel, $property->code)->dropDownList(\yii\helpers\ArrayHelper::merge(['' => ''], \yii\helpers\ArrayHelper::map($propertiesValues, 'value', 'value')));
?>

                                </div>
                            </div>
 /**
  *
  * Получение доступных опций для свойства
  * @param CmsContentProperty $property
  * @return $this|array|\yii\db\ActiveRecord[]
  */
 public function getRelatedPropertyOptions($property)
 {
     $options = [];
     if ($property->property_type == \skeeks\cms\relatedProperties\PropertyType::CODE_ELEMENT) {
         $propertyType = $property->handler;
         if ($this->elementIds) {
             $availables = \skeeks\cms\models\CmsContentElementProperty::find()->select(['value_enum'])->indexBy('value_enum')->andWhere(['element_id' => $this->elementIds])->andWhere(['property_id' => $property->id])->asArray()->all();
             $availables = array_keys($availables);
         }
         $options = \skeeks\cms\models\CmsContentElement::find()->active()->andWhere(['content_id' => $propertyType->content_id]);
         if ($this->elementIds) {
             $options->andWhere(['id' => $availables]);
         }
         $options = $options->select(['id', 'name'])->asArray()->all();
         $options = \yii\helpers\ArrayHelper::map($options, 'id', 'name');
     } elseif ($property->property_type == \skeeks\cms\relatedProperties\PropertyType::CODE_LIST) {
         $options = $property->getEnums()->select(['id', 'value']);
         if ($this->elementIds) {
             $availables = \skeeks\cms\models\CmsContentElementProperty::find()->select(['value_enum'])->indexBy('value_enum')->andWhere(['element_id' => $this->elementIds])->andWhere(['property_id' => $property->id])->asArray()->all();
             $availables = array_keys($availables);
             $options->andWhere(['id' => $availables]);
         }
         $options = $options->asArray()->all();
         $options = \yii\helpers\ArrayHelper::map($options, 'id', 'value');
     }
     return $options;
 }