• Помощь по Flexbox?

    bugo_aneo
    @bugo_aneo
    Верстальщик по жизни, буддист, кофеман
    Задайте для Row минимальную высоту и align-items: stretch; у контейнера. Хотя это и так по умолчанию. Почему min-height - это плохо?
    Ответ написан
    7 комментариев
  • Upwork перестал сотрудничать со SKRILL, как выводить деньги?

    opium
    @opium
    Просто люблю качественно работать
    Тупо пионер
    Ответ написан
    Комментировать
  • Стоит ли и зачем использовать PHP на фронте, где есть Angular?

    max_bozhenov
    @max_bozhenov
    Top-notch frontend developer & ui designer
    Я сам по себе Full-stack разработчик, но больше Frontend'ом люблю заниматься... Начинал работать с AngularJS (набрался опыта с 1-й версией и после релиза второй версии - забил на AngularJS), сделал пару SPA проектов на AngularJS и скажу следующее, AngularJS - только для SPA приложений, а PHP только в качестве RESTful API сервиса (в мое случае, я использую Laravel/Lumen и считаю это идеальное решение!)

    Если же хотите и дальше на этом проекте работать, возьмитесь за VueJS2 (лично мое имхо, он куда более приятнее чем AngularJS2, а у первой версии нет будущего и нет смысла новые проекты начинать делать на нем...). И он хорошо подходит для SSR приложений, т.е. не обязательно делать SPA. Я как раз сейчас и разрабатываю бизнес приложение на этом стэке (VueJS2 + Laravel).

    Хотя... если я правильно понял и вы делаете игру в команде, то для игры в наше время SPA самый лучший выбор. Так что предложите в команде перейти на RESTful API сервис в качестве бэкэгда...
    Ответ написан
    1 комментарий
  • DonationAlerts API?

    Яндекс.Деньги
    Ответ написан
    Комментировать
  • Где найти честного программиста на почасовую оплату?

    Программиста с почасовой оплатой без траты ни минуты учтенного времени на "чай" Вы никогда не найдете, на условия с тотальным контролем никто за обычную плату не согласится, только с хорошей наценкой и то маловероятно.
    Вам наверное лучше четко обговаривать сроки выполнения и отдельно оговорить что в случае превышения сроков уменьшать итоговую сумму оплаты допустим на 5% за каждый день просрочки по вине исполнителя. Ну и само собой в ТЗ должны быть оговорены все требования к продукту и используемые технологии. В случае дополнительного "хочу вот эту плюшку" с Вашей стороны срок обговаривается заново.
    Ответ написан
    4 комментария
  • Как передать правильно из mysql в php if else?

    @entermix
    Можно использовать всего один запрос, используйте такую конструкцию:
    UPDATE `pup` SET `yes` = if(`status` = 0, `yes` + 1, `yes` + 2) WHERE `id` = YOUR_ID

    $this->db->query("UPDATE `pup` SET `yes` = if(`status` = 0, `yes` + 1, `yes` + 2) WHERE `id` = " . $this->getUser->id);
    Ответ написан
    8 комментариев
  • В чем разница между admin и adminhtml в magento?

    Hide
    @Hide
    инженер-программист
    The <admin> tags allows you to define
    - routes for the backend,
    - the ACL for each module admin section
    - and the theme for the admin.

    The <adminhtml> tags
    It's the equivalent to <frontend> for the backend.
    It allows you to define
    - layout files,
    - translations,
    - events.
    The only think different from <frontend> is that it doesn't allow routes. (use <admin> for that).

    Источник: magento.stackexchange.com/questions/15024/differen...
    Ответ написан
    Комментировать
  • Запись в сессию или куки данных из чекбокса?

    driver458
    @driver458
    лучше в куки, данные будут храниться в браузере пользователя и они не представляют никакой важной информации как например паролии т.д.
    Ответ написан
    Комментировать
  • Как натянуть макет (Landing-page) на wordpress?

    orlov0562
    @orlov0562
    I'm cool!
    Тут масса вариантов: в твоем случае, можешь вывести точно так же как посты в рубрике при этом использовать установку класса через доп поле поста.
    while ( have_posts() ) : the_post();
    $class = get_post_meta(get_the_ID(), 'block-class', true);
    echo '<section class="'.$class.'">';
    ...
    echo '</section>';
    endwhile;


    Для лендинга, проще создать 1 файл шаблона (home.php), в котором без заморочек вставить нужные блоки. Если нужен редактрор текстов из админки, тогда сделать кастомный тип постов и выводить их по id в нужное место того же home.php. Но лендинги, бывают разные.. так что как изаращаться выбирать тебе самому :)
    Ответ написан
    Комментировать
  • Как в Wordpress правильно указывать путь до темы оформления в js-скриптах?

    alone_lion1987
    @alone_lion1987
    Веб-разработчик
    Используйте следующее:

    <? bloginfo("template_url") ?>/js/...
    Ответ написан
    2 комментария
  • Как заставить код JS работать в цикле PHP?

    @DenJel
    Вынесите JS за цикл php и напишите там нормальный код, который берет все элементы с такими классами и пробегает по ним и проверяет ваши условия. Что-то типо:
    window.onscroll = function() {
      document.getElementsByClassName( 'class' ).forEach( function( el, id ) {
          if ( isVisible( el ) ) {
            doSmthWithEl()
        }
      } );
    }

    с jquery это делается за пару строк
    Ответ написан
    Комментировать
  • Какой аналог денвера лучше использовать?

    Sanes
    @Sanes
    Open server
    Ответ написан
    Комментировать
  • Вопрос про статические функции в php, как избавиться от Strict Standards: Non-static method?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Каша. В основном в голове. Не понимаете как работает наследование, не понимаете как работают классы. Ошибку вам четко указали, просто вы не знаете основ.
    Я знаю, как расшифровывается Non-static method и понимаю, что функция идёт не статичной, как её хочет видеть сам php.
    . PHP не хочет ее видеть статичной, просто указывает что вы ее статичной не сделали, а обращаетесь как к статик.
    хочу вызвать класс oldClass, которая наследуется от controllerClass и функцию view, дабы уже вызвать $this->_message (как пример), уже из обновлённого controllerClass

    1) Классы не вызываются, вызываются методы класса.
    2) То что он наследуется от какого-то класса не делает его автоматически видимым внутри родительского класса, это ВООБЩЕ ДРУГОЙ КЛАСС теперь, никак не связанный с родителем, просто имеющий некоторые одинаковые методы и свойства. Чтобы вызвать его метод, сначала нужно создать объект - экземпляр нужного класса.
    Ответ написан
    Комментировать
  • Как найти отрезок кода в Wordpress который отвечает за публикацию поста?

    bingumd
    @bingumd
    ...
    А почему не сделать так:

    add_action( 'publish_post', 'названия_вашей_функции', 10, 2 );
    Ответ написан
    6 комментариев
  • WP Почему показывается "старая" главная?

    @ommunist
    Делаю и поддерживаю мультиязычные сайты
    Предположу что старая главная index.html, а в .htaccess остался порядок в инструкции DirectoryIndex index.html index.php . Поменяйте их местами.
    Ответ написан
    Комментировать
  • Как достать значение из объекта?

    @Atllantis
    $a->response[1]->from_id;
    Ответ написан
    Комментировать
  • Как не нарушать SOLID?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вы путаете инверсию контроля и инверсию зависимости. Давайте по порядку кратенько.

    Зачем нам нужны контроллеры или различные представления данных

    Зачем нам в принципе контроллер? Что он делает? Для упрощения не будет воспринимать контроллер как "один объект" и вместо этого представим себе его как целый слой. Так же заменим слово "модель" словом "приложение".

    Задача контроллера - принять и обработать запрос и выдать ответ. По сути в контексте WEB наш HTTP запрос и ответ это представление, которое хочет получить клиент (браузер, мобильное приложение, SPA, что угодно). HTTP - это интерфейс пользователя (UI) для нашего web-приложения.

    Например что бы независеть от реализации клиента и что бы было удобно мы передаем даты в формате iso 8601 (пример: 2016-07-14T19:40:12Z). Это удобно что бы быть независимым от реализации клиента или сервера. Но это не удобно для нашего приложения. В приложении скорее всего нам удобнее всего работать с объектом типа DateTime. То есть приложение использует абсолютно другое представление.

    Мы могли бы прямо в приложении конвертить DateTime в iso 8601 но тогда мы делаем наше приложение привязанным к одному конкретному представлению, которое хочет получить клиент. К примеру по каким-нибудь причинам известным только темным богам, вам вдруг понадобится быстро прикрутить интеграцию с другим сервисом и те же данные гонять уже в RFC2822. И стало быть уже приложению нужно париться о еще одном представлении.

    Мы могли бы сделать какие-то адаптеры у приложения, и дергать их в зависимости от потребностей, но тогда опять же наше приложение все еще знает о представлении, которое ему собственно не нужно. То есть у нас есть зависимость приложения от его UI что... похоже на "не лучшую идею". И тут на помощь приходит Inversion of Control.

    Что такое Inversion of Control

    Тут название само говорит за себя. Допустим у нас был объект A который дергал объект B, причем объект A по сути и не должен ничего знать об объекте B потому то это не его дело. Принцип инверсии контроля говорит нам о том, что в таких ситуациях именно B должно вызывать A, таким образом меняя направление потока управления. Это позволяет нам уменьшить связанность и повысить зацепление компонентов нашей системы. Так же сделав это у нас может появиться объект C который так же будет дергать объект A. Если говорить о UI - мы просто можем сделать несколько реализаций UI.

    То есть если еще упростить - фреймворк должен дергать ваш код, а не код дергать код фреймворка. Тем самым мы снижаем связанность одного от другого.

    Роутер и контроллеры как реализация UI

    Что бы отвязать приложение от логики формирования представления, вынесем это все в отдельный "слой" и назовем этот слой - контроллеры. Точнее это будет как цепочка адаптеров. Один адаптер (фронт-контроллер по сути) получает Request и делает какие-нибудь вещи с ним. Например проверяет можем ли мы вообще делать подобный запрос. Другой адаптер вызывает роутер и выясняет какой дальше адаптер вызвать. Если следующий адаптер не вызван - надо вернуть 404-ую ошибку. Если же все пошло хорошо - мы вызываем еще один адаптер, который уже будет конвертировать HTTP запрос в какое-то действие приложения (вызов метода приложения по сути).

    Так а инверсия зависимости это что?

    Инверсия зависимости - очень похожа на инверсию контроля но действует чуть по другому. Проще всего будет вглянуть на картинку:

    Dependency_inversion.png

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

    Если мы не хотим завязываться на SwiftMailer, и дать возможность в будущем изменить способ отправки почты, мы можем в рамках нашего модуля объявить интерфейс а в другом модуле уже его реализовать с применением SwiftMailer. Для упрощение под модулями мы можем понимать неймспейсы например.

    Нужно ли соблюдать принцип инверсии зависимости в случае контроллеров?

    Нет. Контроллеру нужна конкретная реализация какой-то части нашего приложения (ибо приложение главнее UI-ки), иначе в них нет особо смысла. И наше приложение вообще не должно париться о том что есть какие-то там контроллеры.

    будет ли правильным передавать зависимости в роутинге

    Это уже вопрос реализации IoC. Конкретно вы хотите получить что-то вроде Dependency Injection. Вы можете забрать зависимости из аргументов метода экшена. или аргументов конструктора контроллера.... или просто использовать контейнер зависимостей внутри контроллера.... это совершенно не важно. Контроллеры это то место где высокая связанность на компоненты фреймворка более чем допустимы.

    С другой стороны у вас теперь роутинг совмещает обязанность маршрутизации и разруливания зависимостей. Сами понимаете что это как-то нарушает прицип единой ответственности. Этим может заниматься Controller Resolver какой-нибудь.
    Ответ написан
    2 комментария
  • Как в magento (в adminhtml) на странице модуля добавить блок?

    @Dante_FX
    Нужен или нет - вы сейчас решите сами)
    Примечания:
    1) Magento 1.7.2.0.
    2) Способ, как говориться, "для себя" - в коммерческий модуль я бы его допиливал.
    3) Вы знакомы с маджентой. Если что-то не понятно - уточняйте.

    Поехали:
    1) Если не было до этого в модуле лаяута для админки - подключите его в config.xml
    2) Добавляем в лаяут:
    <adminhtml_sales_order_view>        
            <reference name="order_tab_info">
                <block type="dante_test/adminhtml_test" name="dante_test_test" template="dante/test/test.phtml" />            
            </reference>       
        </adminhtml_sales_order_view>


    Так вы добавляете в лаяут блоку, отвечающему за вывод содержимого табы "Information", свой дочерний блок.
    Наш дочерний блок находится app/code/{local/community}/Dante/Test/Block/Adminhtml/Test.php
    class Dante_Test_Block_Adminhtml_Test extends Mage_Adminhtml_Block_Template {}

    с шаблоном \app\design\adminhtml\default\default\template\dante\test\test.phtml

    Этот блок теперь необходимо вывести.

    Способ 1)
    Для этого либо делаем реврайт класса Mage_Adminhtml_Block_Sales_Order_View_Tab_Info в конфиге.
    Теперь у нас есть класс:

    class Dante_Test_Block_Adminhtml_Sales_Order_View_Tab_Info  extends Mage_Adminhtml_Block_Sales_Order_View_Tab_Info {
        public function getTestHtml()
        {
            return $this->getChildHtml('dante_test_test');
        }
        
        protected function _toHtml()
        {
            return parent::_toHtml() . $this->getTestHtml();
        }
    }


    где

    $this->getChildHtml('test')

    Выводит содержимое шаблона модуля
    dante/test/test.phtml

    Таким образом блок Ваш добавится в самый низ. Чтобы засунуть его в середину - или используйте js, или
    переназначайте блоку Dante_Test_Block_Adminhtml_Sales_Order_View_Tab_Info свой phtml шаблон, куда скопируйте оригинальный маджентовский (\app\design\adminhtml\default\default\template\sales\order\view\tab\info.phtml) и внесите в него необходимые правки.

    Способ 2 заключается в том, что Вы не делаете реврайт класса Mage_Adminhtml_Block_Sales_Order_View_Tab_Info, а копируете его из core в local директорию (с сохранением путей) и изменяете как хотите. Оригинальный файл из core директории остается не измененным и не будет теперь использоваться.

    P.S. Если Вас по каким-то причинам не устраивает реврайт (это может быть из-за конфликта с реврайтами сторонних модулей) или перенос в директорию local (что может вызвать проблему после обновления мадженты - хотя, похоже, что это теперь маловероятный сценарий), Вы можете выполнить задачу через использование обзервера.
    Ответ написан
    Комментировать
  • Компиляция sass?

    sayber
    @sayber
    Да, я программирую на PHP и еще асинхронно!
    Уберите подпись под именем front-end'er. Она не соответствует правде, вы ведь задали вопрос который любой фронтенд разработчик знает.

    Посмотрите что используется gulp, grunt, webpack, codekit etc...
    В корне проект должен быть файл.
    Найдете нужный файл конфига, поймете что использовать.
    Посмотреть, есть ли папка .idea, возможно компиляция была настроена при помощи IDE

    Так же можно посмотреть конфиг magento, возможно используется билдер в нем.
    Ответ написан
    5 комментариев