public function getFormField($form, $fieldClass = null, array $extra = [])
 {
     return parent::getFormField($form, CheckboxField::className(), $extra);
 }
Example #2
0
 public function getFormField($form, $fieldClass = null, array $extra = [])
 {
     return parent::getFormField($form, \Mindy\Form\Fields\DateField::className(), $extra);
 }
Example #3
0
 public function initFields(array $fields = [], $extra = false)
 {
     $className = $this->modelClassName;
     if (empty($fields)) {
         $fields = $className::getFields();
     }
     $needPk = !$extra;
     $fkFields = [];
     $m2mFields = [];
     foreach ($fields as $name => $config) {
         /* @var $field \Mindy\Orm\Fields\Field */
         if (!is_object($config) && !$config instanceof \Mindy\Orm\Fields\Field) {
             $field = Creator::createObject($config);
             $field->setName($name);
             $field->setModelClass($className);
         } else {
             $field = $config;
         }
         // $field->setModel($model);
         if (is_a($field, $className::$autoField) || $field->primary) {
             $needPk = false;
             $this->primaryKeyField = $field;
         }
         if (is_a($field, $className::$fileField)) {
             $this->localFileFields[$name] = $field;
         }
         if (is_a($field, $className::$relatedField)) {
             /* @var $field \Mindy\Orm\Fields\RelatedField */
             if (is_a($field, $className::$manyToManyField)) {
                 /* @var $field \Mindy\Orm\Fields\ManyToManyField */
                 $this->manyToManyFields[$name] = $field;
                 $m2mFields[$name] = $field;
             }
             if (is_a($field, $className::$hasManyField)) {
                 /* @var $field \Mindy\Orm\Fields\HasManyField */
                 $this->hasManyFields[$name] = $field;
             }
             if (is_a($field, $className::$oneToOneField) && $field->reversed) {
                 /* @var $field \Mindy\Orm\Fields\ForeignField */
                 $this->oneToOneFields[$name] = $field;
             } elseif (is_a($field, $className::$foreignField)) {
                 /* @var $field \Mindy\Orm\Fields\ForeignField */
                 $fkFields[$name] = $field;
             }
         } else {
             $this->localFields[$name] = $field;
         }
         $this->allFields[$name] = $field;
         if (!$extra) {
             $extraFields = $field->getExtraFields();
             if (!empty($extraFields)) {
                 $extraFieldsInitialized = $this->initFields($extraFields, true);
                 foreach ($extraFieldsInitialized as $key => $value) {
                     $field->setExtraField($key, $this->allFields[$key]);
                     $this->extFields[$name] = [$key => $this->allFields[$key]];
                 }
             }
         }
     }
     if ($needPk) {
         $pkName = 'id';
         /* @var $autoField \Mindy\Orm\Fields\AutoField */
         $autoFieldClass = $className::$autoField;
         $autoField = new $autoFieldClass();
         $autoField->setName($pkName);
         // $autoField->setModel($model);
         $this->allFields = array_merge([$pkName => $autoField], $this->allFields);
         $this->localFields = array_merge([$pkName => $autoField], $this->localFields);
         $this->primaryKeyField = $autoField;
     }
     foreach ($fkFields as $name => $field) {
         // ForeignKey in self model
         if ($field->modelClass == $className) {
             $this->foreignFields[$name . '_' . $this->primaryKeyField->getName()] = $name;
         } else {
             $this->foreignFields[$name . '_' . $field->getForeignPrimaryKey()] = $name;
         }
     }
     return $fields;
 }