Задать вопрос
Профиль пользователя заблокирован сроком с 25 марта 2020 г. и навсегда по причине: нарушение п. 6.6 правил сайта
  • Как реализовать на yii2 сохранение chat_id telegram bot?

    @hollanditkzn Автор вопроса
    Решение данного вопроса, в контроллере TelegramController.php
    use app\models\User;
    use frontend\components\TelegramComponent;
    use yii\db\Exception;
    use yii\filters\AccessControl;
    use yii\web\Controller;
    use frontend\models\Telegram;
    
    class TelegramController extends Controller
    {
        public function beforeAction($action)//Обязательно нужно отключить Csr валидацию, так не будет работать
        {
            $this->enableCsrfValidation = ($action->id !== "webhook");
            return parent::beforeAction($action);
        }
    
           public function behaviors()
        {
            return [
                'access' => [
                    'class' => AccessControl::className(),
                    'only' => ['webhook'],
                    'rules' => [
                        [
                            'allow' => true,
                            'roles' => ['?'],
                        ],
                    ],
                ],
            ];
        }
        
        public function actionWebhook()
        {
            $data = json_decode(file_get_contents('php://input'), true);//Обязательно json формат
           if(isset($data['message']['chat']['id']))
            {
                $chatId = $data['message']['chat']['id'];//Получаем chat_id
                $message = isset($data['message']['text']) ? $data['message']['text'] : false;
    
                $send = false;
    
                if (strpos($message, '/start') !== false) {//Возвращает позицию
                    $explode = explode(' ', $message);//Разбивает строку на подстроки
                    $token = isset($explode[1]) ? $explode[1] : false;//Получаем токен
                    $data = [
                        'raw' => $token,
                        'chat_id' => $chatId,
                    ];
                    $send = Telegram::start($data);//Сравниваем токен и если имеется схожесть то сохраняем telegram_chat_id в бд
                } else {
                    $send = 'Комманда не найдена. Если Вы уверены в том, что ошибка, обратитесь в тех поддержку';
                }
                $send = $send ? '' : 'Что-то пошло не по плану. Обратитесь в тех.поддержку';
            }
        }
    }

    В моделе Telegram.php
    <?php 
    namespace frontend\models;
    
    use common\models\User;
    
    class Telegram
    {
        public static function start($data){
        	return self::login($data);
        }
        public static function login($data)
        {
        	$token = $data['raw'];//берем токен который отправляем
        	if ($token && $user = User::findOne(['token' => $token])) {//сравниваем
        		if ($user->telegram_chat_id) {
                    return "Уважаемый $user->name, Вы уже авторизованы в системе. ";
                }
                $user->telegram_chat_id = $data['chat_id'];//сохраняем chat_id в бд
                $user->save();
                return "Добро пожаловать, $user->name. Вы успешно авторизовались!";   
        	} else {
        		return "Извините, не удалось найти данный токен!";
        	}
        }
    }

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

    @hollanditkzn Автор вопроса
    Решил проблему
    <?= $form->field($client, 'phone')->widget(Select2::className(), [
                        'data' => ArrayHelper::map(Client::find()->all(), 'id', 'phone'),
                        'options' => ['placeholder' => 'Введите номер телефона'],
                        'pluginOptions' => [
                            'allowClear' => true,
                            'language' => [
                                'noResults' => new JsExpression('function () { return "<button type=\"button\" class=\"btn btn-primary btn-xs\">Добавить клиента</button>"; }'),
                            ],
                            'escapeMarkup' => new JsExpression('function (markup) {
            return markup;
        }')
                        ],
                ])?>
    Ответ написан
    Комментировать
  • Почему не выходит параллакс эффект?

    @hollanditkzn Автор вопроса
    Все решил проблему. Была проблема в том что я parallasx неправильно написал, вторая проблема overflow-x и y я не туда сунул И все номрмально заработало
    https://jsfiddle.net/hollanditkzn/onpop8xk/3/
    Ответ написан
  • Как сделать так чтобы не выходили данных за страницу в виджете?

    @hollanditkzn Автор вопроса
    .grid-view td {
    white-space: inherit;
    }
    Ответ написан
    Комментировать
  • Не сохраняет файл пишет проблема err_connection_reset?

    @hollanditkzn Автор вопроса
    Да ошибся это фреймворк
    Когда прикрепляешь файл и сохраняешь в базу данных. Идет загрузка и тут выходит страница что соединение сброшено. Соответственно есть подробнее про проблему и то что там описано ничего не подходит. пишет err_connection_reset
    В контроллере
    if ($model->load(Yii::$app->request->post())) {
                $model->file = UploadedFile::getInstance($model, 'file');
                if(isset($model->file))
                {
                $model->file->saveAs('maket/Maket_'.$model->id_zakaz.'.'.$model->file->extension);
                $model->maket = 'Maket_'.$model->id_zakaz.'.'.$model->file->extension;
                $model->status = 4;
                }            
                $model->save();
    
                return $this->redirect(['view', 'id' => $model->id_zakaz]);

    В моделе [['file'], 'file', 'skipOnEmpty' => true],
    Ошибок ничего не возникает, то есть данная проблема возникает при загрузке на сервер
    Началось примерно вчера и прикреплялись изображение
    Ответ написан
    Комментировать
  • Как реализовать запрос?

    @hollanditkzn Автор вопроса
    Решил проблему переписав
    query->andWhere(['status' => [Zakaz::STATUS_DISAIN, Zakaz::STATUS_MASTER, Zakaz::STATUS_SUC_MASTER, Zakaz::STATUS_SUC_DISAIN], 'action' => 1]);
    Ответ написан
    Комментировать
  • Почему не выбирает цвет colorPicker?

    @hollanditkzn Автор вопроса
    <input type="text" id="colorTextKons" name="colorTextKons" class="jscolor">
    
    $("#colorTextKons").on("input", function(){
    		ctx.fillStyle = "#"+$(this).val();
    	});

    А что я делаю не так?
    Ответ написан
    Комментировать
  • Как сделать так если не выбрано изображение ошибку не выводит?

    @hollanditkzn Автор вопроса
    Все догнал, посмотрел var_dump что находится в $_FILES["photo"] и там в error находился значение 4, что означала эта шибка, что файл не был выбран.
    И я переписал код
    if (isset($_FILES["photo"])) 
    { if ($_FILES["photo"]["error"] == 0) {
    	$imageFile = move_uploaded_file($_FILES["photo"]["tmp_name"], "image/img/".$_FILES["photo"]["name"]);
    	$imageFile1 = "image/img/".$_FILES["photo"]["name"];
    	$imageSave = "image/imgKonstr/".$_FILES["photo"]["name"];
    
    	switch ($_FILES["photo"]["type"]) {
    		case 'image/png':
    			$im2 = imagecreatefrompng($imageFile1);
    			break;
    		case 'image/jpeg':
    			$im2 = imagecreatefromjpeg($imageFile1);
    			break;
    	}
    	imagealphablending($im2, false);
    	imagesavealpha($im2, true);
    	$trans = imagecolorallocatealpha($im2, 0, 0, 0, 127);
    
    	$rotate = imagerotate($im2, $turn*-1, $trans, $visibility);
    	$width1 = imagesx($rotate);
    	$height1 = imagesy($rotate);
    	$width2 = imagesx($im2);
    	$height2 = imagesy($im2);
    
    	if ($size == 0) {
    		$size = $width2;
    	} else {
    		$size = $size;
    	}
    	imagecopyresampled($im, $rotate, (int)$leftCanvas, (int)$topCanvas, 0, 0, $size, $height1, $width1, $height1);
    	imagedestroy($im2);	
    	imagedestroy($rotate);
    	}
    }
    Ответ написан
    Комментировать
  • Почему не отображается изображение когда выбираешь ее?

    @hollanditkzn Автор вопроса
    Все догнал как правильно сделать
    if (isset($_FILES["photo"])) {
    	$imageFile = move_uploaded_file($_FILES["photo"]["tmp_name"], "image/img/".$_FILES["photo"]["name"]);
    	$imageFile1 = "image/img/".$_FILES["photo"]["name"];
    	$imageSave = "image/imgKonstr/".$_FILES["photo"]["name"];
    	if ($_FILES["photo"]["type"] == "image/png") {
    		$im2 = imagecreatefrompng($imageFile1);
    	} else {
    		$im2 = imagecreatefromjpeg($imageFile1);
    	}
    	imagealphablending($im2, false);
    	imagesavealpha($im2, true);
    	$trans = imagecolorallocatealpha($im2, 0, 0, 0, 127);
    
    	$rotate = imagerotate($im2, $turn*-1, $trans, $visibility);
    	$width1 = imagesx($rotate);
    	$height1 = imagesy($rotate);
    	$width2 = imagesx($im2);
    	$height2 = imagesy($im2);
    	imagecopyresampled($im, $rotate, (int)$leftCanvas+150, (int)$topCanvas+150, 0, 0, 60+10*$size, 60+10*$size, $width1, $height1);
    }
    Ответ написан
  • Как отобразить в GD второе изображение, которая повернулось imagerotate?

    @hollanditkzn Автор вопроса
    Все догнал вместо
    imagecopyresampled($im, $im2, 200, 150, 0, 0, 100, 100, $width1, $height1);

    Поставил вот так
    imagecopymerge($im, $rotate, $leftCanvas, $topCanvas, 0, 0, $width1, $height1, $visibility);
    Ответ написан
    Комментировать
  • Не устанавливается заливка на png в GD?

    @hollanditkzn Автор вопроса
    Все решил проблему тем, что сначала я создал слой imagecreatetruecolor, только потом я вставлял изображение и imagecopyresampled выводил его, только такое решение я сделал
    Ответ написан
    Комментировать
  • Не могу понять почему у меня не выводит изображение на gd?

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

    @hollanditkzn Автор вопроса
    Решена проблема, надо header всегда выше ставить, и ничего перед ним на экран не выводить
    Ответ написан
    Комментировать
  • Как исправить $_FILES error 4?

    @hollanditkzn Автор вопроса
    А все решен вопрос. Кэш почистил
    Ответ написан
    Комментировать
  • Почему выводит ошибку и не работает поворачиваться изображение?

    @hollanditkzn Автор вопроса
    Решен момент с текстом, надо было обернуть jquery. Теперь надо понять почему не поворачивается
    Ответ написан
    Комментировать
  • Как сделать валидацию на ajax без формы?

    @hollanditkzn Автор вопроса
    Решил проблему, в bedoreSend я вставил валидацию
    var  send = true;
    $('form#orderForm input[type="text"]').each(function(){
        if(!$(this).val() || $(this).val() == ''){
           $(this).css('border-color','red');//Сделаем бордер красным
           send = false;
        }
    });
    
    if(!send) return false;
    Ответ написан
    Комментировать
  • Почему у меня не выходят другие цвета при нажатие на radio?

    @hollanditkzn Автор вопроса
    Все нашел проблема в value="#000;" в ; надо просто убрать и все заработает
    Ответ написан
    Комментировать
  • Как отправить письмо в phpMailer?

    @hollanditkzn Автор вопроса
    Отправителя я оказывается не указал, посмотрел как можно вывести ошибки в phpMailer
    Ответ написан
    Комментировать