Ответы пользователя по тегу Yii
  • Почему не работает POST изи postman в yii2?

    @FernandoErrNando
    Скорее всего, у вас где-то не прошло сохранение из-за ошибки валидации: поле parent_id у вас в модели integer, а передаете в теле запроса строку, но не факт, что единственная ошибка. Проблема в том, что вы не видите ошибки, потому что не проверяете данные, которые пришли к вам. Также непонятно, что у вас все-таки - HTML-форма или АПИ-эндпоинт. В первом случае код должен выглядеть как-то так
    $model = new СategoryForm();
    
            if (Yii::$app->request->isPost) {
                $model->load(Yii::$app->request->post());
                if ($model->validate()) {
                    if ($model->save())) {
                        return $this->redirect(['index]);
                    }
                }
            }
    
            return $this->render('create', [
                'model' => $model,
            ]);

    , а во втором как-то так
    public function actionCreate()
        {
            $categoryForm = new CategoryForm();
            $categoryForm->load(Yii::$app->request->post(), '');
            if (!$categoryForm->validate()) {
                Yii::$app->response->setStatusCode(400);
                return $categoryForm->errors;
            }
            try {
                if (!$categoryForm->save()) {
                    throw new BadRequestHttpException(Yii::t('app', 'Категория не добавлена'));
                }
                
            } catch (\Throwable $e) {
                throw new BadRequestHttpException($e->getMessage());
            }
    
            return ;
        }
    Ответ написан
    Комментировать
  • Я залил сайт yii2 на хостинг beget, а н выдает ошибку, как это исправить?

    @FernandoErrNando
    По инструкции делал? вангую, что composer install не выполнился до конца или вообще не запускался.
    Ответ написан
    Комментировать
  • Как в YII2 сделать фильтрацию из mssql чтобы поля не повторялись?

    @FernandoErrNando
    Если я правильно понял задачу, то вы хотите, чтобы у вас была фильтрация в таблице по статусу, но у вас 1 и тот же статус может иметь разные ID. Тогда решаем 2 задачи:
    1. Объединение ID по названию в фильтре
    2. Фильтрация основной таблице.

    Если вы хотите, чтобы в выпадающем списке не было дублей, то вам правильно написали, воспользуйтесь GROUP BY. Сделайте запрос типа
    SELECT GROUP_CONCAT(DISTINCT status_id) as ids, status FROM table GROUP BY status
    дальше дублей не будет. Полученное значение ids уже можно использовать в фильтрации через WHERE IN, если поле пришло ненулевое.

    Ну а вообще, если честно, то у вас таблица выглядит ненормализованной, подумайте, почему так получилось. Может можно как-то разделить таблицу, вынести часть полей в другую, тогда исчезнет дублирование данных и подобные сложные запросы упростятся
    Ответ написан
    Комментировать
  • Совсем новичок. Как заменить ключ API?

    @FernandoErrNando
    https://github.com/lis-dev/nova-poshta-api-2#%D1%8... - тут описано создание экземпляра класса АПИ. Там описана куда осещуествляется подстановка ключа АПИ. Поищите по исходникам вашего сайта значение "NovaPoshtaApi2(" и там найдете старый ключ АПИ, который может быть захардкожен, а может подставляется из конфига.
    В первом случае, поменяйте его везде, где найдете. А во втором - просто замените в конфиге старый ключ на новый
    Ответ написан
  • Как вынести общие столбцы миграции в Yii2?

    @FernandoErrNando
    Как вариант, можно попытаться переписать компонент миграции и пользоваться своим
    Ответ написан
    Комментировать
  • Как сделать подключение сразу к нескольким базам данных?

    @FernandoErrNando
    В конфиге пропишите:

    <?php
    return [
        'components' => [
           'db' => [
                'class' => 'yii\db\Connection',
                'dsn' => 'mysql:host=localhost;dbname=name',
                'username' => 'login',
                'password' => 'password',
                'charset' => 'utf8',
            ],
            'db2' => [
                'class' => 'yii\db\Connection',
                'dsn' => 'pgsql:host=localhost;dbname=db2',
                'username' => 'user',
                'password' => 'pass',
                'charset' => 'utf8',
            ],
           
    ];

    Затем в моделях, которые используют 2-ю бд, просто укажите её:
    public static function getDb()
        {
            return Yii::$app->db2;
        }
    Ответ написан
    3 комментария