• Как использовать Twig в MVC, в моделе?

    Модель, если простыми словами, это класс, описывающий структуру конкретной таблицы + гетеры и сеттеры. Отдавать страничку будет у вас контроллер. Я в своем проекте делаю так:
    Класс, отвечающий за работу твига:
    <?php
    namespace View;
    
    use Controller\Error;
    use Twig_Environment;
    use Twig_Loader_Filesystem;
    
    class TwigView implements IView
    {
        /**
         * @var Twig_Environment
         */
        private $twig;
        /**
         * @var Twig_Loader_Filesystem
         */
        private $loader;
        /**
         * @var string
         */
        private $template;
        /**
         * @var array
         */
        private $params;
    
        /**
         * @param string $template Имя шаблона
         * @param array $params Передаваемые параметры
         */
        public function __construct($template, $params)
        {
            $this->loader = new Twig_Loader_Filesystem(TEMPLATE_DIR);
            $this->twig = new Twig_Environment($this->loader);
            $this->template = $template;
            $this->params = $params;
        }
    
        /**
         * @return string
         */
        public function render()
        {
            try {
                return $this->twig->render($this->template, $this->params);
            } catch (\Twig_Error_Loader $e) {
                $error = new Error();
                $error->index404();
            }
        }
    }

    В контроллере (метод вывода всех пользователей системы):
    public function index()
        {
            $this->isAuthorized('users');
            try {
                $twig = new TwigView('Users/ShowAllUsers.twig',
                    [
                        'session' => $_SESSION,
                        'user' => $this->em->getRepository('Model\User')->getAll()
                    ]
                );
                print $twig->render();
            } catch (DatabaseException $e) {
                $error = new Error();
                $error->index1010($e->getMessage());
            }
        }
    Ответ написан
    Комментировать
  • Как записать 2 числа в 1 ячейку?

    @maxyc_webber
    Web-программист
    как стукнуть по пальцам не ударив по яйцам
    Ответ написан
    Комментировать
  • Как на PHP разобрать массив?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    function.json-decode.php
    $array = .......;
    foreach ($array as $el) {
      if (is_array($el)) 
          foreach ($el as $key=>$sub_el) {
            if ($key=='owner_id' && $sub_el==23172738) { echo 'Ура!';}
          }
    }
    Ответ написан
    5 комментариев
  • Принцип работы читов?

    He11ion
    @He11ion
    PHP-monkey
    Все в мире - суть виртуальная абстракция. Нет отдачи, нет стен, нет области видимости, нет ложки. Все окружающее - лишь набор нулей и единиц, модулирующих реальность. Когда ты поймешь это, Нео, ты познаешь суть всех читов в мире и сломаешь матрицу. Дерзай.
    Ответ написан
    Комментировать
  • Как лучше организовать базу и обновление данных товаров MySQL?

    загружаем во временную(-ые) таблицу(-ы), затем лочим базу, удаляем существующую(-ие) таблицу(-ы) и переименовываем временные
    Ответ написан
    Комментировать
  • Как правильно проверять переменную в php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Аналогом
    if ($var)
    для случая, когда переменная может быть не инициализирована, является
    if (!empty($var))

    Тем не менее, следует учесть замечание OnYourLips, и делать так, чтобы переменные, источником которых является твой скрипт, всегда были определены.

    Update.
    Мда. Полез поискать тебе ответ для случая, когда 0 считается не пустым значением.

    Если бы тогда пассажир по фамилии KorsaR-ZN написал тебе не феерически бредовую отсебятину,
    empty - проверят именно на пустоту переменной, т.е возвращает true если переменная является пустой и false в противоположном случаи.

    а объяснил, что
    !empty($var)
    всего-навсего является короткой записью
    if (isset($var) && $var))
    то сейчас у тебя вопроса не возникло бы.

    Это к вопросу о том, почему давать плохие ответы плохо (для автора) но хорошо (для посещаемости). И объясняет, почему администрация специально разводит на сайте лохов.
    Ответ написан
  • Это присвоение типа?

    Denormalization
    @Denormalization
    Это называется "приведение типов" (type casting).

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

    cyberyak
    @cyberyak
    Куда двигаться в веб-разработке? - Подальше от России
    Ответ написан
    Комментировать
  • Как seo-продвинуть сайт без денег?

    XXX
    @XXX
    Решение где-то рядом
    Alexander-K
    • Проведите аудит сайта на предмет косяков (инструменты вебмастеров Вам в этом помогут)
    • Если сайт еще не добавлен в гугл и яндекс вебмастер, то добавьте.
    • Исправьте косяки, sitemap, robots.txt, meta-теги, описания страниц, заголовки, оптимизация содержимого страниц, перелинковка и т.д.
    • Скормите карту сайта поисковикам
      http://google.com/webmasters/sitemaps/ping?sitemap=ссылка на Ваш sitemap
      http://www.bing.com/webmaster/ping.aspx?siteMap=ссылка на Ваш sitemap

      Для того чтобы яндексу карту отправить, придется зайти на страницу вебмастера. И до кучи можете воспользоваться сервисом пинга в 40 поисковиков.
    • Если сайт региональный, то задайте регион.
      В яндекс вебмастере задается в настройках сайта, География сайта → Регион сайта
      В гугловских инструментах вебмастера, Поисковый трафик → Таргетинг по странам и языкам → Страна
    • Составьте семантическое ядро
    • Напишите SEO тексты заточив под ключи по которым будете двигаться
    • Если сайт не статичный, зарегайте его в соц сетях и постите туда новости со ссылками на свой сайт
    • Регайтесь на крупных форумах, с ссылками не закрытыми от индексации и напишите там про Ваш сайт
    • Оставляйте комменты в dofollow-блогах


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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    $url  = 'posts/%s/%s_%s.html'; 
    $args = array ('user',123,456);
    echo vsprintf($url, $args);
    Ответ написан
    Комментировать
  • Есть ли альтернативы ModX?

    Sanes
    @Sanes
    Попробуйте AVE CMS. Принцип сборки сайта примерно такой же. Есть приятная мелочь, как история изменения документа.
    Ответ написан
    1 комментарий
  • Как писать оптимальный PHP код?

    golotyuk
    @golotyuk
    99% оптимизации PHP это
    - обязательно использовать APC (или opCache в новых версиях)
    - использовать ООП только там, где это реально нужно
    - использовать кэширование
    - здравый смысл (не загружать списки из 100 элементов, если нужно только 10 и т.п.)

    Поддерживаю Fesor - микрооптимизация - это скорее привычки, но никак не методы решения каких-то реальных проблем со скоростью работы.

    Что почитать:
    - Общие правила оптимальной работы PHP на практике
    - Howto по производительности PHP с внутренностями
    - 50 micro tips для оптимизации PHP (англ.)
    Ответ написан
    5 комментариев
  • Как реализуется легкопонятная дата поста/комментария?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Считаем разницу от текущего времени
    Если меньше минуты - выводим "только что"
    Иначе если меньше часа - выводим "XX минуту/минуты/минут назад"
    Иначе если меньше суток - выводим "XX час/часа/часов назад"
    Иначе если меньше двух суток - выводим "вчера"
    Иначе если меньше трёх суток - выводим "позавчера"
    Иначе если меньше месяца - выводим "XX день/дней/дня назад"
    ...
    Ответ написан
    Комментировать
  • Как организовать загрузку файла из размещенной на одном хостинге админки на другой хостинг, где находится сайт?

    maxaon
    @maxaon
    Если вам необходимо стразу заливать файлы на другой домен, минуя промежуточные сервера можете использовать загрузку через JS (Даже можно просто форму сделать, тоже работать будет).

    Если хотите сделать через JS можете использовать Plupload. Для того, чтобы работал POST на другой домен используйте CORS, выставив в upload.php заголовок "Access-Control-Allow-Origin".
    Можно даже использовать тот же код, который есть на вашем основном домене, просто добавив заголовок.
    Ответ написан
    Комментировать