• Интеграция 1C с сайтом на PHP, как лучше реализовать?

    @Mylistryx
    https://elisdn.ru/blog/61/soap-services-on-yii2
    я работаю с 1С через подобие такого сервиса. Немного заточил под себя, но работает как часы.
    P.S. 1Сники, вас в детстве букварем по голове били или Англо-Русским словарем?
    WSDL->PolNaklFisLico_V12_New (Request ->все параметры Nullable, Response-> string, который json, в котором есть строка data, где параметры не именованные и разделены ,EXPRESSION, )... Я вас за это проклинаю! И после этого PHP-разрабов называют говнокодерами.
  • Что такое accessToken и authToken и в чем разница?

    @Mylistryx
    $accessToken = $request->loginSomeService($authToken);

    ...->doSomething($callback,$params,$accessToken);

    Как то так!
  • Как хранить production-конфиги?

    @Mylistryx
    Как делаю я (окружение локально +/- такое же как на сервере, ОС не принципиально, но желательно):
    1. Через composer создаю проект локально
    2. init dev
    3. Делаю все что надо, если в конфигах появляются новые секции/параметры добавляю их в environment файлах (dev и prod, если опять разворачивать с нуля или на продакшене)
    4. git commit/git push в свой репозиторий
    5. На проде git pull из репы и composer install (именно install, а не update! почитайте про разницу. с именованием налажали они, это и путает людей).
    6. Проставляю права на нужные папки типа runtime/assets
    7. init prod и заполняем файлы конфигурации на сервере ручками!
    Дальше уже git push/git pull в рабочем режиме. Конфиги и index.php находятся под git ignore по умолчанию и не перетираются.
    Из неудобств - при добавлении новых параметров в конфигах придется добавлять ручками их на сервере.

    Второй вариант: .env файлы. Гораздо удобней, но кому как!
  • Yii2 не находит класс и не определяет переменные, в чем может быть пробема?

    @Mylistryx
    MSAFT, у вас коде видимо где-то написано <? вместо <?php отсюда и ошибка. Битрикс (я это в слух сказал? ) в своем коде повсеместно использует <? вместо <?php. Сейчас не знаю, раньше так было, когда я "это" настраивал.
  • Yii2 как решить ошибку при миграции?

    @Mylistryx
    Запись с такими значениями уже существует и блокируется ключем уникальности на уровне БД.
    Гугл по SQLSTATE[23505] postgres, в первых же ссылках выдачи.
  • Вставка данных используя только что добавленные данные?

    @Mylistryx
    Дело конечно ваше, но правильней делать:
    Таблица 'post' {id, ....}, Таблица 'tag' {id,tag,...}, Таблица post_tag {post_id,tag_id}
    Связь многие ко многим. В таблице post_tag можно прописать каскадное удаление, чтоб не ловить удаление тега или поста руками. Как это сохранять есть во всех видеоуроках и статьях по Yii2
  • Yii2. Kartik select2 Как включить русский язык?

    @Mylistryx
    Браузер! Accept-language какой посылает? Приоритет стоит скорее всего en, вот и перекрывает англ.языком. Попробуйте в другом браузере (прости Господи, ие, к примеру)
  • Какие размеры изображений вы генерируете и как их отдаёте?

    @Mylistryx
    Андрей, поменялся в верстке размер изображения на странице, а в статьях у вас в БД получается записано /images/xxx/320x240.jpg. А так /images/xxx/main.jpg образно. Вот и получается, что старые статьи не поломались по верстке. Нам пригодилось это и не раз. Делали-делали, херакс, макет подправили на несколько пикселей. Поправили в конфиге, сбросили кеш и все а ажуре. Ну и варианты с ограничениями по высоте и ширине: надо выводить картинку 1920х1080 к примеру, скриншот показывать. 1920 * 1080 это больше 2 000 000 вариантов, это если ограничено по таким размерам, а если 2хширина и 2х высота, то это уже 8 000 000+ вариантов. Как думаете, я могу очень хорошо озадачить ваш сервер простеньким скриптом? А если нумерация изображений сквозная, то я могу его заставить вообще работать на меня генерируя превьюхи. А если это какой нибудь хостинг с оплатой за ресурсы? Вот то-то и оно! так что фиксированный именованный реестр превьюх - это вопрос времени )
  • Какие размеры изображений вы генерируете и как их отдаёте?

    @Mylistryx
    Александр Синицын, я в этом плане вообще не заморачиваюсь, у меня у меня в nginx:
    try_files $uri $uri/ /index.php$args
    а уже в роутах я описываю параметры для картинок, причем через немного кастомизированный GroupUrlRule

    $rules['files'] = new GroupUrlRule([
    'prefix' => 'thumbs',
    'routePrefix' => $routePrefix,
    'host' => '@hostFiles',
    'rules' => [
    .....
    [
    'pattern' => PATTERN_ID . '/_.',
    'route' => 'file/thumbs',
    'alias' => '@thumbs',
    'suffix' => false,
    ],
    .....
    ],
    ]);
    это пример из старого проекта и не факт что он рабочий. GroupUrlRule принимал еще параметр alias чтоб генерировать алиасы для роутов. Получались "именованные" роуты по типу зенда, и изменив роут ненадо было по коду ничего менять, да и если надо было менять, то по алиасу искать всяко проще.
    Думаю понятен смысл? Если файла не существует, то nginx проваливался в PHP и там срабатывало правило которое генерировало превью под заданные параметры. В данном случае способ обрезки брался из URL.
    PATTERN_ID мы выносили в константу, там тупо . Так писать было удобней, особенно когда роутов сотни.
  • Какие размеры изображений вы генерируете и как их отдаёте?

    @Mylistryx
    Загружаем фуллсайз в директорию выше webroot. При запросе сервера nginx отдает если есть она в кеше. Если нет - то генерируем скриптом кладем в кеш (доступный в webroot) и отдаем.
    Размеры картинок:
    1. Ограничить макс.размерами по высоте и ширине.
    /images/07D2FCF3-46AB-54FC-8895-09C8ED18FD19/1920x1080.jpg
    Плюсы: Легко описать в коде
    Минусы: Злоумышленник может нагенерировать тонны мусора. Сменится верстка или еще что и придется править в коде, базе и вообще не тру подход!
    2. Реестр размеров
    'avatar' => [150,150] // Это сильно упрощенное описание
    'avatar-big' => [250,270]
    /images/07D2FCF3-46AB-54FC-8895-09C8ED18FD19/avatar.jpg
    /images/07D2FCF3-46AB-54FC-8895-09C8ED18FD19/avatar-big.jpg
    /images/07D2FCF3-46AB-54FC-8895-09C8ED18FD19/main.jpg
    /images/07D2FCF3-46AB-54FC-8895-09C8ED18FD19/preview.jpg
    ....
    Плюсы: Можно управлять размерами централизовано, т.е. поменялась верстка, мы поменяли размеры main и preview и очистили кеш картинок. Все. Ненадо правок в коде. При запросе несуществующих отвечаем 404 - Идите лесом, вас не звали!
    Минусы: Немного покодить придется, но совсемм чуть-чуть.
    По поводу значимой области - всегда кропать по меньшей стороне и всё. То, что загрузили изображение 1800х10 пикселей не проблема разработчика! Как вариант, если для хранения используется еще и БД, то сохранять смещение от центра или от угла области видимости, как например при загрузке аватарки на ВК.
    Еще как вариант параметры к изображению __fill, __crop и на основании их уже генерировать превьюшку кропнутую, заполненную или еще что.
  • Как развернуть проект на yii2?

    @Mylistryx
    goodw84: Ничего не надо исправлять, надо добавить .htaccess нормальный. Никита дал уже верный ответ Вам.
  • Как правильно пользоваться created_at и updated_at (дата создания и обновления поста)?

    @Mylistryx
    AlikDex: У меня так и происходит, по крону обновляется статус у публикаций (новостей, статей и прочего). Что то прилепляется, что от отлепляется, что то выводится, что то скрывается, т.е. я выбираю основную массу WHERE `status` = static::STATUS_PUBLISHED ORDER BY 'published_at' DESC. При этом еще кеш теггированый с зависимостями на обновление записей, но переписывать сюда все это нет смысла, т.к. достаточно много специфичной бизнес-логики.

    Здесь я думаю достаточно будет кешировать результаты выборки и ставить зависимость на события добавления\обновления\удаления записей.
  • Как правильно пользоваться created_at и updated_at (дата создания и обновления поста)?

    @Mylistryx
    Андрей Токмаков: $model->touch('lastVisit') обновит значение и сохранит данные не вызывая валидацию и триггеры на событие, поэтому привык использовать его.

    published_at - у меня в форме есть чекбокс "Опубликовать" и поле с датапикером и если стоит чекбокс и заполнено это поле, то в published_at записывается значение из этого поля. Если публикация не отложенная, то подставляется текущее значение time() и при этом меняется статус публикации.
    Если же после снять чекбокс, то изменится только статус, соответственно если его обратно поставить - тоже, т.е. метка времени публикации не изменяется, хотя тут вы можете делать уже свою логику, и, например, обновлять время публикации после ее повторной отправки из корректуры.
    Пример:
    Создается новость (Н1) и ставится отложенная публикация на завтра на утро, на 9.00. Мы ставим чекбокс и выставляем дату и время отложенной публикации. В поле published_at запишется метка времени завтра, 9:00. Таким образом в выборку она начнет попадать только с завтрашнего утра, и если сейчас добавить еще одну новость (Н2) и не заполнять поле отложенной публикации, то порядок вывода у них завтра с утра после 9:00 будет:
    1. Н1
    2. Н2
    3.. остальные новости в порядке убывания даты published_at
  • Как правильно пользоваться created_at и updated_at (дата создания и обновления поста)?

    @Mylistryx
    Если отложенная публикация - то ручками в форме в это поле ($paublished_at) через DateTimePicker вставляем какое либо значение и в выборке тянем все, что меньше текущего time();
  • Как правильно пользоваться created_at и updated_at (дата создания и обновления поста)?

    @Mylistryx
    Т.е. изменение значений created_at и updated_at не влияют на позицию публикации в выдаче списка.
  • Как правильно пользоваться created_at и updated_at (дата создания и обновления поста)?

    @Mylistryx
    created_at и updated_at не влияют на статус публикации, они просто информационные поля. Сортировка сделана именно по полю published_at в которое ставится метка времени публикации записи. У меня там еще вагон и меленькая тележка различных условий, типа отложенная запись, прилепленная запись, прилепленная запись на первую\вторую\n-ю позицию, но сортировка происходит по полю published_at.
    Обновляю его я принудительно, т.е. $model->touch('published_at');