• Как сделать связь между 3 таблицами?

    @DmitriyFrolov
    Добрый день, спасибо за помощь, я выспался и понял, что очень сильно ошибся и не понял главного, что в принципе при обращении напрямую к методу возвращается ActiveQuery.. и мне стоит просто добавить all()...

    То есть я могу получить нужные мне данные как

    $component = $component->getDamages()->andWhere(['id' => $car->id])->all()

    так например

    $component = $component->getDamages($car->id)->all();

    В общем большое вам спасибо за ваше терпение. В ваших примерах я многое почерпнул для себя.
  • Как организовать валидацию и сохранение динамических форм в YII?

    @DmitriyFrolov Автор вопроса
    С этим я примерно разобрался, делаю выборку из базы данных полей, после чего перебираю их и формирую массив атрибутов для динамической модели.
    Затем добавляю правила вальвации в динамическую модель, после чего всё это скармливаю ActiveForm где опять же перебегаю массив полей.

    В принципе всё чудесно работает. Форма загружается, валидируется.

    После вальвации перебираю снова массив с параметрами, выбираю параметры из модели. И сохраняю значения. Но если честно мне кажется что это просто набор очень громоздкого бесмысленного кода. Может это можно сделать как то более изящно ?

    #model основная модель
    #dynamicModel - динамичная модель
    #fields - набор параметров
    
    //Загружаю данные из модели
    if( $model->load(Yii::$app->request->post()) && $dynamicModel->load(Yii::$app->request->post()) {
    
    //Проводим валидацию моделей
    
    if($model->validate() && $dynamicModel->validate()){
    
    //Сохраняю основную модель
    $model->save();
    
    //Перебираю массив полей
    foreach ($fields as $field) {
    //Проверяю содержит ли поле массив
    if(is_array($dynamicModel->{$field->name})){
    //Перебираю все значения значения
       foreach ($dynamicModel->{$field->name} as $_value)
       {
             $value = new FieldValue();
             $value->field_id = $field->id;
             $value->model_id = $model->id;
             $value->option_id = $_value;
             $value->save();
          }
       } else {
          //Иначе просто сохраняем значение не перебирая данные
          $value = new FieldValue();
          $value->field_id = $field->id;
           $value->model_id = $model->id;
           $value->option_id = $dynamicModel->{$field->name};
           $value->save();
    }
    }
    
    }
    
    }


    Просто, мне крайней не нравиться этот вариант, хоть он и работает вполне сносно, просто пугает, какой код получиться при обновлении данной модели.

    Я просто не представляю как в будущем при обновлении параметров не запутаться в них, и не продублировать при сохранении.
  • Принцип работы транслитерации yii2 Inflector::slug?

    @DmitriyFrolov Автор вопроса
    Максим Федоров, Да спасибо большое, когда прочила ваш первый комментарий, понял что дело не в кириллице а в настройках сервера, открыл BaseInflector.php и понял что транслитерация производится стандартной библиотекой php intl. После чего заново её подключил и всё разработало. Я как то этот момент упустил, так как скрипт не вылетал с критической ошибкой ругаясь что с библиотекой что то не так или она вообще отвалилась.

    Ещё раз спасибо вам большое !
  • Принцип работы транслитерации yii2 Inflector::slug?

    @DmitriyFrolov Автор вопроса
    Я думал над этим вопросом но увы.

    $string = 'текст на русском языке';

    echo mb_detect_encoding($string);
    //UTF-8

    echo yii\helpers\Inflector::transliterate($string)
    //текст на русском языке

    echo yii\helpers\Inflector::slug($string);
    //
    $string = mb_convert_encoding('текст на русском языке','UTF-8');

    Результат тот же :(

    Я вот думаю может это связанно с какими то библиотеками которые должны быть установленные на сервер.
  • Как реализовать в YII2 время последнего посещения сайта пользователем?

    @DmitriyFrolov Автор вопроса
    Спасибо большое, это действительно то что нужно !
  • Почему при обновлении страницы или переходе выходит из Fullscreen?

    @DmitriyFrolov Автор вопроса
    Просто вроде данный скрипт запускает в полноэранном режиме сам документ, конечно да по сути при перезагрузке страницы данный документ так же перегружается ... а есть ли возможность запускать не документ в полноэкранном режиме а сам браузер путём скрипта ? Конечно вариант с запоминанием не плох, но документ будет переодический переключатся из данного режима при переходе и перегрузке, конечно вариант это ajax оно не вызывает перегрузки самой страницы но всё же может есть какой то иной метод,
  • Yii2 сохранение атрибутов в модели?

    @DmitriyFrolov Автор вопроса
    Спасибо большое, в rules[], добавил к правилу MyVar, [['myVar', 'MyVar'], 'string', 'max' => 255], всё прекрасно заработало. А не знаете возможно ли на прямую перезаписать переменную myVar что бы не работать с ней через MyVar ?