• Как отправить письмо PDF файлом?

    @KevinSmash Автор вопроса
    Максим Тимофеев, Стал выводить нормальный pdf файл, если вставить в WriteHtml обычный код, даже для проверки весь код шаблона счета вставил и он вывелся нормально, но когда пытаюсь вставить вот так файл
    $model = $this->findModel($id);
            $mpdf = new Mpdf();
            $mpdf->WriteHTML($model);
            $mpdf->Output();

    То выдает ошибку: WriteHTML() requires $html be an integer, float, string, boolean or an object with the __toString() magic method.
  • Как отправить письмо PDF файлом?

    @KevinSmash Автор вопроса
    Максим Тимофеев, Всё равно та же ошибка 5cc1efbc986a7915241766.jpeg5cc1efc96ebda004548153.jpeg
    Сейчас попробую без картика
  • Как отправить письмо PDF файлом?

    @KevinSmash Автор вопроса
    Максим Тимофеев, Здравствуйте, поправил код, но теперь в логах другая ошибка
    exception 'yii\base\ErrorException' with message 'Undefined index: data' in C:\OpenServer\OSPanel\domains\yii2\vendor\mpdf\mpdf\src\Writer\ImageWriter.php:96
    Stack trace:
    #0 C:\OpenServer\OSPanel\domains\yii2\vendor\mpdf\mpdf\src\Writer\ImageWriter.php(96): yii\base\ErrorHandler->handleError(8, 'Undefined index...', 'C:\\OpenServer\\O...', 96, Array)
    #1 C:\OpenServer\OSPanel\domains\yii2\vendor\mpdf\mpdf\src\Writer\ResourceWriter.php(117): Mpdf\Writer\ImageWriter->writeImages()
    #2 C:\OpenServer\OSPanel\domains\yii2\vendor\mpdf\mpdf\src\Mpdf.php(9832): Mpdf\Writer\ResourceWriter->writeResources()
    #3 C:\OpenServer\OSPanel\domains\yii2\vendor\mpdf\mpdf\src\Mpdf.php(1997): Mpdf\Mpdf->_enddoc()
    #4 C:\OpenServer\OSPanel\domains\yii2\vendor\mpdf\mpdf\src\Mpdf.php(9323): Mpdf\Mpdf->Close()
    #5 C:\OpenServer\OSPanel\domains\yii2\vendor\kartik-v\yii2-mpdf\src\Pdf.php(409): Mpdf\Mpdf->Output('', 'S')
    #6 C:\OpenServer\OSPanel\domains\yii2\vendor\kartik-v\yii2-mpdf\src\Pdf.php(261): kartik\mpdf\Pdf->output('        <!DOCTY...', '', 'I')
    #7 C:\OpenServer\OSPanel\domains\yii2\backend\controllers\UsersController.php(194): kartik\mpdf\Pdf->render()
    #8 [internal function]: backend\controllers\UsersController->actionSend('1')
    #9 C:\OpenServer\OSPanel\domains\yii2\vendor\yiisoft\yii2\base\InlineAction.php(57): call_user_func_array(Array, Array)
    #10 C:\OpenServer\OSPanel\domains\yii2\vendor\yiisoft\yii2\base\Controller.php(157): yii\base\InlineAction->runWithParams(Array)
    #11 C:\OpenServer\OSPanel\domains\yii2\vendor\yiisoft\yii2\base\Module.php(528): yii\base\Controller->runAction('send', Array)
    #12 C:\OpenServer\OSPanel\domains\yii2\vendor\yiisoft\yii2\web\Application.php(103): yii\base\Module->runAction('users/send', Array)
    #13 C:\OpenServer\OSPanel\domains\yii2\vendor\yiisoft\yii2\base\Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
    #14 C:\OpenServer\OSPanel\domains\yii2\backend\web\index.php(17): yii\base\Application->run()
    #15 {main}
    2019-04-25 18:36:43 [127.0.0.1][1][7r090crlsftdrouhrrpcv1j3a1][info][application] $_GET = ['id' => '1'
    ]

    Хотя письмо стало приходить на email, но там вот такой ужас5cc1e36147456467324896.jpeg
  • Как отправить письмо PDF файлом?

    @KevinSmash Автор вопроса
    Максим Тимофеев, Аа, простите, не заметил
  • Как отправить письмо PDF файлом?

    @KevinSmash Автор вопроса
    Максим Тимофеев, Это то я понял, но у меня этого файла нет, откуда он должен взяться? Мне самому необходимо написать?
  • Как отправить письмо PDF файлом?

    @KevinSmash Автор вопроса
    Максим Тимофеев, Заменил, не сработало. В логах написано
    2019-04-25 11:48:34 [127.0.0.1][1][7r090crlsftdrouhrrpcv1j3a1][error][yii\base\ViewNotFoundException] exception 'yii\base\ViewNotFoundException' with message 'The view file does not exist: C:\OpenServer\OSPanel\domains\yii2\backend\views\layouts\pdf.php' in C:\OpenServer\OSPanel\domains\yii2\vendor\yiisoft\yii2\base\View.php:233
    Stack trace:
    #0 C:\OpenServer\OSPanel\domains\yii2\vendor\yiisoft\yii2\base\Controller.php(399): yii\base\View->renderFile('C:\\OpenServer\\O...', Array, Object(backend\controllers\UsersController))
    #1 C:\OpenServer\OSPanel\domains\yii2\vendor\yiisoft\yii2\base\Controller.php(385): yii\base\Controller->renderContent('<!DOCTYPE html ...')
    #2 C:\OpenServer\OSPanel\domains\yii2\backend\controllers\UsersController.php(174): yii\base\Controller->render('send', Array)
    #3 [internal function]: backend\controllers\UsersController->actionSend('1')
    #4 C:\OpenServer\OSPanel\domains\yii2\vendor\yiisoft\yii2\base\InlineAction.php(57): call_user_func_array(Array, Array)
    #5 C:\OpenServer\OSPanel\domains\yii2\vendor\yiisoft\yii2\base\Controller.php(157): yii\base\InlineAction->runWithParams(Array)
    #6 C:\OpenServer\OSPanel\domains\yii2\vendor\yiisoft\yii2\base\Module.php(528): yii\base\Controller->runAction('send', Array)
    #7 C:\OpenServer\OSPanel\domains\yii2\vendor\yiisoft\yii2\web\Application.php(103): yii\base\Module->runAction('users/send', Array)
    #8 C:\OpenServer\OSPanel\domains\yii2\vendor\yiisoft\yii2\base\Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
    #9 C:\OpenServer\OSPanel\domains\yii2\backend\web\index.php(17): yii\base\Application->run()
    #10 {main}
    2019-04-25 11:48:34 [127.0.0.1][1][7r090crlsftdrouhrrpcv1j3a1][info][application] $_GET = [
        'id' => '1'
    ]
  • Как отправить письмо PDF файлом?

    @KevinSmash Автор вопроса
    А кода ошибки нет, просто всплывает такое окно5cc1802459e4e321477821.jpeg
  • Как отправить письмо PDF файлом?

    @KevinSmash Автор вопроса
    Библиотека kartik\mpdf\Pdf;
  • Почему стирается значение даты при передаче?

    @KevinSmash Автор вопроса
    Алексей Долгов,
    public function rules()
        {
            return [
                [['user_id', 'manager_contact_phone', 'manager_name', 'company_name', 'publish_new_per_run', 'date_subscription'], 'required'],
                [['published_products_count', 'publish_day', 'publish_new_per_run', 'export_in_stock_only', 'can_future',
                    'export_allowed', 'has_subtotal', 'has_cian', 'avito_user_id', 'dub_h1_in_desc',
                    'has_timetable_param', 'has_vk', 'has_avito', 'has_yml', 'canContactPhone',
                    'available_url','disable_avito_export_yml','use_smart_publish','subscription',
                    'subscription_cost',/*'products_sorting',*/ 'subscription_period', 'ogrn', 'inn',
                    'bik', 'settlement_account', /*'for_mut', 'searchfordesc', 'use_onetime_publication'*/], 'integer'],
                [['last_publishing_datetime','address','unloading_time','comment', 'date_subscription', 'date_subscription_end'], 'safe'],
                [['avito_root_id', 'avito_login', 'avito_password', 'manager_contact_phone',
                    'company_name', 'manager_name', 'xml_feed', 'json_log_feed', 'all_ads_images', 'logo',
                    'text_begin', 'text_end', 'Region', 'City', 'subtotal_login', 'subtotal_password',
                    'client_id', 'client_secret', 'parent_ids','teg','url_avito','telegram_chat_id', 'category_list',
                    'time_start', 'time_finish', 'turbo_text', 'products_id', 'exceptions_time', 'comment'], 'string'],
                [['user_id'], 'unique'],
                [['user_id', 'show_vendor','show_compatibility', 'show_description','show_timetable','notice_user_telegram','can_vendor_code'], 'integer'],
                ];
    
        }
    
    
        public function beforeValidate() {
            if ($this->date_subscription !== null) {
                $this->date_subscription= strtotime($this->date_subscription);
            }
            return parent::beforeValidate();
        }

    Вот, код модели
  • Почему стирается значение даты при передаче?

    @KevinSmash Автор вопроса
    Да не, вопросы закончились просто
  • Почему стирается значение даты при передаче?

    @KevinSmash Автор вопроса
    Алексей Долгов, Спасибо, всё сработало. Просто добавил false
  • Как правильно составить Ajax запрос?

    @KevinSmash Автор вопроса
    slo_nik, Здравствуйте. Сегодня обратил внимание, что data-key неверный, то есть для 5 пользователя data-key 6 и тд, для каждого, а 4 пользователю присвоился 112, из-за этого данные обновляются не у нужных клиентов. Как это исправить?
  • Как отсортировать чекбоксы в GridView?

    @KevinSmash Автор вопроса
    Это просто пример
  • Как правильно составить Ajax запрос?

    @KevinSmash Автор вопроса
    slo_nik, Спасибо, теперь все точно получилось
  • Как правильно составить Ajax запрос?

    @KevinSmash Автор вопроса
    А как хранить в timestamp? Я только тот вариант знал, который выше указывал
  • Как правильно составить Ajax запрос?

    @KevinSmash Автор вопроса
    slo_nik, в базе даннных задан тип date, и сохраняется в формате Y-m-d
  • Как правильно составить Ajax запрос?

    @KevinSmash Автор вопроса
    slo_nik, Вы это имеете в виду как сохраняет?
    [['date_subscription'], 'date', 'format' => 'php:Y-m-d']


    А какой тогда больше подходит?
  • Как правильно составить Ajax запрос?

    @KevinSmash Автор вопроса
    slo_nik, Здесь ошибка или я сделал не все, потому что ничего не изменилось?

    public function behaviors()
                {
    
        return [
            [
                'class' => TimestampBehavior::className(),
                'attributes' => [
                    ActiveRecord::EVENT_BEFORE_INSERT => ['date_subscription'],
                    ActiveRecord::EVENT_BEFORE_UPDATE => ['date_subscription'],
                ],
                // если вместо метки времени UNIX используется datetime:
                // 'value' => new Expression('NOW()'),
            ],
        ];
    }
  • Как правильно составить Ajax запрос?

    @KevinSmash Автор вопроса
    slo_nik, Это ведь в модели настраивается? Извините за глупые вопросы
  • Как правильно составить Ajax запрос?

    @KevinSmash Автор вопроса
    slo_nik, А нет, тут я тоже ошибся. Данные почему-то сохраняются в представлении и отображаются как будто я их изменил, но в БД уходит пустое значение, и если у меня была дата, я её изменил, то в БД она теперь просто как 0000:00:00

    Вот тут делал так, Views:

    [
                    'label' => 'Дата начала подписки',
                    'value' => function ($model, $key, $value) {
                        return  \kartik\date\DatePicker::widget([
                            'name' => 'date_subscription',
                            'model' => $model,
                            'value' => date('d-m-Y',$model->date_subscription),
                            'type' => DatePicker::TYPE_INPUT,
                            'pluginOptions' => [
                                'format' => 'yyyy-mm-dd',
                                'autoclose' => true,
                            ],
                        ]);
                    },
                    'contentOptions' => [
                        'onchange' => '
                var Id = $(this).parent().attr("data-key");
                var uDate = $(this).children("input").val();
                console.log(Id + " - " + uDate);
                $.ajax({
                   url: "'. Url::to('/admin/clients/ajax-request') .'",
                   type: "POST",
                   data:{id: Id, date: uDate},
                   success: function(data){
                      console.log(data)
                   }
                })
            '
                    ],
                    'format' => 'raw',
                ],


    Controllers:

    public function actionAjaxRequest()
        {
            if(Yii::$app->request->isAjax){
                $newDate = Yii::$app->request->post('date');
                $uId = Yii::$app->request->post('id');
                if(($model = UserSettings::findOne(['user_id' => $uId])) != null){
                    $model->date_subscription = strtotime($newDate);
                    if(!$model->update(false,['date_subscription'])){
                        return 'Данные не обновились.';
                    }
                    else{
                        return 'Данные успешно обновились.';
                    }
                }
                else{
                    return 'Пользователь не найден.';
    
                }
            }
            return false;
        }