• Как лучше хранить адрес файлов/картинок в базе данных

    Ogra
    @Ogra
    4й вариант.
    1. В отдельной таблице можно хранить оригинальное имя файла, держа его при этом на сервере с хитрой организацией файлов, вида: /ab/bc/de/abbcde.doc
    2. Оригинальное имя файла хранится, а значит, если пользователь 1 закачал file.doc, а второй пользователь закачал file.doc, то и при скачивании обоих файлов получится file.doc, а не file(1).doc
    3. В таблице можно хранить md5 файла и не забивать место (или даже процессорное время, если происходит обработка картинок/видео) дубликатами.

    Ну в общем, этот слой абстракции — никому не мешает.
    Ответ написан
    7 комментариев
  • Какой PHP-фреймворк обладает лучшей русскоязычной документацией?

    Ogra
    @Ogra
    Таким разработчикам надо камень на шею, в мешок и в воду — тогда научатся плавать.
    Пусть английский учат!
    Ответ написан
    Комментировать
  • Как вы делаете архитектурные решения AJAX?

    gromdron
    @gromdron
    Работаю с Bitrix24
    На сколько такое решение приемлимо?


    В зависимости от проекта и выделенного времени варьируется и оценка.
    Я бы оценил его как "Неудовлетворительный, находящийся на гране допустимного, но решающий исходный запрос".
    Ваш подход может существовать, однако на Code review у нас бы его завернули с пометкой "Все переделать".

    Есть ли какие то более правильные, гибкие архитектурные решения?


    Вариантов на вкус и цвет, начиная от родного AJAX => 'Y' параметра в компоненте и его работы и заканчивая javascript rendering.
    Замечательным вариантом было бы:
    - Чтобы тег #orders-block рендерил компонент d6core:custom.order.list. Т.е. он был бы самодостаточным.
    - Не создавалась бы отдельная страница под "ajax.php", а использовались бы контроллеры компонентов (хотя бы)
    - Возвращалось как можно меньше данных, т.е. структуры данных, а не верстка.

    Конечно интересует здесь и вопросы ИБ.


    Контроллеры компонентов по-умолчанию имеют защиту от CSRF, а так же можно установить проверки на авторизацию (только от авторизованных пользователей), проверку на метод запроса (POST/GET), проверку на пользователя (передавать его в signedParams).
    Почитайте про контроллеры, там много интересного написано.

    Тогда вопрос, зачем делать такую обертку если я могу тупо тянуть данные из $_POST напрямую?


    Например потому что при обработке запроса глобальный $_POST может поменять любой скрипт выполняющий до вашего, а HttpRequest содержит исходную информацию которая была отправлена на сервер.
    Или потому что при обращении к несуществующему ключу $_POST выдается notice-сообщение, а HttpRequest корректно возвращает null.
    Если ваша функция или метод работает с $_POST, то в случае объекта вы можете указать что ожидается HttpRequest и знать что придет именно параметры запроса и что там будут гарантированно методы getPost и т.п., а в случае с $_POST вам могут направить туда что угодно с какими угодно ключами.
    Ответ написан
    Комментировать
  • Как правильно делать выборку из 2х таблиц с помощью API Bitrix?

    pro6ka
    @pro6ka
    web developer
    Вот здесь посмотреите https://dev.1c-bitrix.ru/learning/course/index.php...
    По сути Вам нужно сформировать запрос в Table1 и при-join-ить к ней Table2, тогда сможите в одном запросе собрать из 2-х таблиц все необходимые поля.
    Ответ написан
    Комментировать