• Почему не работает редирект с WWW?

    Isolution666
    @Isolution666
    Full-Stack Developer
    ))) я вообще не вижу в этом проблемы, создал в корне сайта файл .htaccess
    - раз
    Открыл файл, написал:

    AddDefaultCharset UTF-8
    
    RewriteEngine On
    RewriteCond %{HTTP:HTTPS} !=on [NC]
    RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

    - два

    И сохранил, никаких редиректов и лишних файлов, я на этих SSL-сертификатах собаку съел )))
    У меня всё работает отлично !
    P.S. примечание, как видно в примере выше, я не писал www , он там и не нужен, при наборе ссылки с www возвращает
    https://example.com
    Ответ написан
  • Как сделать редирект без смены url?

    Isolution666
    @Isolution666
    Full-Stack Developer
    Зная вашу версию, объясняю, есть в urlManager роли, которые надо указать. Если в ролях используются get запросы, тогда надо учитывать, число это или строка, если число, ставим значение 'd' (digital) если это строка,указываем значение 'w' (word), как в примере:

    'urlManager'=> [
                'enablePrettyUrl' => true,
                'showScriptName' => false,            
                    'rules'=> [
    // возвратит название домена, без слэша ( 1 )
                        '' => 'site/index',
    // возвратит экшен без названия папки контроллера ( 2 )
                        '<action:(login|logout|new|index|contact)>' => 'site/<action>',
                        '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
                        '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                        '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
    // возвратит get запрос с ссылкой, у которой переменная $link отобразит строку ( 3 )
                        'site/news/<link:\w+>' => 'site/news',
                    ],            
            ],

    путь к данным параметрам /frontend/config/main.php

    в контроллере /frontend/controllers/SiteController.php
    public function actionNews($link = '') {
                // делаем get запрос
                $get = News::find()->where(['link' => $link])->one();
                return $this->render('news', ['link' => $link, 'get' => $get,]); 
    	}

    естественно не забыть указать узы для класса, и создать во вьюхе файл news.php

    В самом файле все get-переменные будут выглядеть примерно так:
    <?=$get->header;?>

    понятно, что $get - это переменная делающая запрос в БД, а header - переменная и название столбца в таблице БД, из которой передаётся значение по переменной $link а не $id !!!
    Получится что-то типа:

    // это для примера, писать не надо
    <?php 
    $link = 'first';
    ?>
    http://mysite.host/frontend/web/site/news/first


    Если хотите убрать /frontend/web/ , придётся поменять session и request, это может привести к потере директорий для многих стилей и скриптов, и перекроет кислород бекэнд разделу, но можно сделать модуль, создать свой лэяут и отделить во фронтэнде этот раздел, чтобы он был как бы бэкэндом, в тоже время папки с админкой будут во фронтэнде, операция сложная и требует знаний архетектуры Yii2, знания я черпаю из документации, хоть она и на английском, но там есть знакомые фрагменты кода Yii2 и даже описаны примеры и как и что применить.
    В конечном итоге я добился вида ссылок:

    mysite.host/site/news/first - при get-запросе, случай ( 3 )
    и
    mysite.host/news - при отображении страницы из экшена. Случай ( 2 )
    --
    Смотреть выше.
    Успехов вам ))
    Ответ написан
    1 комментарий
  • Тег br не работает в FireFox?

    Isolution666
    @Isolution666
    Full-Stack Developer
    Не знаю что и сказать на это )) Браузеры уже давно стали головной болью для программистов.
    Есть ещё вот такой способ:
    <pre>
           <strong>
                  ул. Дмитрия Мартынова, 47
                  2-40-40-93, 2-415-818
           </strong>
       </pre>

    тег <pre> ещё никто не отменял, он позволяет отображать переносы без <br/> если они в тексте на самом деле есть.

    Интересное решение предлагает bootstrap
    <address>
      <strong>Twitter, Inc.</strong><br>
      795 Folsom Ave, Suite 600<br>
      San Francisco, CA 94107<br>
      <abbr title="Phone">P:</abbr> (123) 456-7890
    </address>
    
    <address>
      <strong>Full Name</strong><br>
      <a href="mailto:#">first.last@example.com</a>
    </address>


    bootstrap-3.ru/css.php#type-addresses

    Почему-то применяя этот фреймворк, проблем с <br> нет. Ну и на крайний случай, старайтесь избегать этого тега. Сейчас к нему относятся с презрением, так как всё решает css3
    К примеру, у вас есть текст, который надо разбивать на три колонки, при выведении из базы данных. Принуждать пользователя чертить html теги таблицы <table> ??? Табличная вёрстка тоже уходит в прошлое, как страшный сон, что же делать? А очень просто, у css есть такой параметр, который формирует столбцы siteis.ru/html-i-css-retsepty/razbivka-teksta-na-k... , и по желанию их может быть и больше и меньше, эту ситуацию реально обыграть и в адаптивной вёрстке. Сделать одну колонку, если сайт смотрят с мобильного устройства. Как видите, способов переноса масса, и даже не нужен <br>, учите css - и жизнь будет радостнее и легче.
    Ответ написан
    2 комментария
  • Почему не работает фильтр в GridView в Yii2?

    Isolution666
    @Isolution666
    Full-Stack Developer
    первое - дописать:
    public function scenarios()
        {
            return Model::scenarios();
        }

    узы сверху указать обязательно:
    use yii\base\Model;

    Второе:
    // grid filtering conditions
            $query->andFilterWhere([
                'id' => $this->id,
            ]);

    Убрать всё лишнее.

    Такова логика Yii2 :)
    Ответ написан
    Комментировать
  • DatePicker в GridView Yii2 не работает?

    Isolution666
    @Isolution666
    Full-Stack Developer
    А если написать просто
    'type' => 'date',
    Вы же используете html5 ?
    По идее календарь и так должен отобразится, хотя не во всех браузерах...
    Возможно Кирилл был прав, если поиск в GridView не настроен, то даже это не спасёт. Ведь инпут будет отправлять данные по дате в никуда ))
    Ответ написан
    Комментировать
  • Есть ли замена iframe?

    Isolution666
    @Isolution666
    Full-Stack Developer
    всё очень просто!
    Надо помнить, что главными в вопросах вёрстки - айдишники, а второстипенные - классы!
    #text {
          color:#000;
    }
    .text {color:#fff;}

    если в блоке есть класс, но стоит айди, то цвет текста будет чёрный а не белый
    <div id="text">
         <div class="text">Здесь сам текст</div>
    </div>


    Есть ещё одна вещь!! С ней не поспорит не один стиль! ))
    .text {color:#0ff !important;}
    Применяем импортант, если хотим увеличить важность стиля, и всё, избавьтесь от iframe как от скверны, фреймы причиняют только вред сайту, к тому же, перед скачиванием Twitter Bootstrap вы можете настроить только те элементы, которые вам нужны, выбрать только то что нужно, в том числе и поменять цвета.

    От себя как от веб-дизайнера скажу, что если ваш сайт содержит серьёзный контент, то нет места разношёрстным стилям, всё должно быть строго и лаконично, минимум 3 цвета, минимум 2 шрифта.

    Размеры тоже должны быть одинаковыми, что у текстов что у заголовков, если текст везде 12pt , то не должно быть страниц с текстом другого размера, внутри текста могут быть: цитата или пояснение какое (чтобы выделить их, поменяйте цвет или размер). Аналогично с заголовками, и они должны быть жирнее и больше. Это не моя прихоть, это для удобства чтения )) Надеюсь помог.
    Ответ написан
  • Как сделать доступными медиафайлы только для некоторых пользователей сайта?

    Isolution666
    @Isolution666
    Full-Stack Developer
    Есть два способа, как ограничивать доступ к контенту.

    1) уровень доступа
    2) возрастное ограничение
    в первом случае уровень доступа присваивается автоматически, при регистрации, например, столбец в базе данных будет называться level и значение по умолчанию = 1 (выставить прямо в БД), в админке можно менять этот уровень например на = 2, или автоматизировать, если пользователь больше месяца зарегистрирован на вашем сайте, то level = 2 нужна функция update для MySQL
    соответственно нужно помнить про столбец даты регистрации, чтобы иметь переменную (точку отсчёта), либо создать фильтр вип клиентов, если клиент не вип, то скрыть, чтобы он стал вип клиентом установи платёжную систему, чуточку по сложнее, но тут плюсов больше! ))


    Что касается второго варианта, тут по больше головников, дело в том что дату рождения здесь нужно указывать сразу и обязательно, при регистрации, либо в личном кабинете, в противном случае он не сможет пользоваться сайтом, в инете найдёшь функцию вычисляющую возраст, но большой плюс в том, что если есть контент 18+ , то вы застрахованы от иска в суд за публичный контент для несовершеннолетних (вопрос нравственности)



    Вопрос вовсе не глупый, думайте, какая задача стоит, исходя из задачи, получится решение, два из них я описал
    Ответ написан
    Комментировать
  • Как правильно сделать прилипающий к верху и низу компонент?

    Isolution666
    @Isolution666
    Full-Stack Developer
    Ваше решение чётко расписала известная интернет-блоггерша Наталья
    shpargalkablog.ru/2013/09/scroll-block.html

    Читайте и экспериментируйте, у вас всё получится! )))

    Пример: sticky01.blogspot.ru/2013/09/4.html
    Ответ написан
    2 комментария
  • Как сделать горизонтальную линию около заголовка в css?

    Isolution666
    @Isolution666
    Full-Stack Developer
    Подумал, что это решение поможет и вам и многим другим!

    Более того, решение идеально для адаптивного дизайна, для составления содержимого, например - книги. Содержание сайта, или Карта сайта - ещё как пример для использования. Код писал сам, так что сильно не ругайте, если увидите там костыли:
    <!DOCTYPE html>
    <html>
        <head>
            <title>Header</title>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <style>
                <!--
                html, body {
                    margin:0;
                    padding:0;
                    width: 100%;
                }
                .tes {
                    width: 50%;
                    margin: auto;
                    margin-top: 120px;
                    overflow: hidden;
                    position: relative;
                }
                .m:after {
                    content: '';
                    position: absolute;
                    margin-top: 14px;
                    float: right;
                    margin-left: 4px;
                    width: 100%;
                    border-bottom: 1px dotted rgba(0, 0, 0, 0.38);
                    z-index: 0;
                    display: inline-table;
                }
                .ro {
                    float: right;
                    position: relative;
                    background: #fff;
                    padding: 0px 6px 0;
                    clear: both;
                    z-index: 2;
                }
                -->
            </style>
        </head>
        <body>
            <div class="tes"> 
                <div class="m">TODO write content content                <span class="ro">1</span></div>
                <div class="m">TODO content                <span class="ro">2</span></div>
                <div class="m">TODO write content                <span class="ro">3</span></div>
                <div class="m">TODO write content                <span class="ro">4</span></div>
                <div class="m">TODO write content                <span class="ro">5</span></div>
            </div>
        </body>
    </html>


    Вот что получиться:

    134e9cbab72d40d994fb5838cc54e225.png

    Учите css 3, там много чего интересного можно делать ))
    Ответ написан
    Комментировать
  • Yii2 Advanced, В какую папку приходят письма?

    Isolution666
    @Isolution666 Автор вопроса
    Full-Stack Developer
    Для тех у кого возникла проблема с поиском писем в автономном режиме, откройте composer
    --
    Выберите путь к вашему проекту, например:
    cd C:\OpenServer\domains\site.host
    нажмите ENTER и введите команду:
    composer update и нажмите ENTER
    после обновления всё должно заработать и появиться

    Ещё нужно проверить здесь /frontend/config/main.php
    'mailer' => [
                'class' => 'yii\swiftmailer\Mailer',
                'useFileTransport' => true,
            ],


    поставьте
    'useFileTransport' => false,

    если хотите чтобы письма шли на электронную почту
    Ответ написан
    Комментировать
  • Как сделать ЧПУ пагинацию на Yii2?

    Isolution666
    @Isolution666
    Full-Stack Developer
    А если я хочу сделать ссылку по принципу:

    так было: http://домен/ru/site/reviev?page=1&per-page=3
    так стало: http://домен/ru/site/reviev/1/3


    что мне писать в urlManager ?

    правило 'site/reviev/<page:\d+>' => 'site/reviev', работает только для get запросов, что не катит в случае с пагинацией.
    Ответ написан