За последние 24 часа нас посетили 21959 программистов и 1004 робота. Сейчас ищут 693 программиста ...

MVC + Twig Вопрос по контроллерам

Тема в разделе "PHP для новичков", создана пользователем AlexProg, 25 авг 2017.

  1. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Всем добра!

    Шел второй час ночи... Задача не решалась... Направьте на путь истинный!? Очень прошу :)

    Итак. Есть MVC (роутинг, контроллер и т.д. все как пологается) и шаблонизатор Twig.
    Вопрос: Как вывести постоянную информацию (проверка авторизации, сайдбар и прочая инфа) которая нужна на всех страницах сайта во все public function view всех контроллерах?

    Сейчас в /controller/home.php выводится вся инфа для главной и инфа для всех страниц.
    Но допустим в /controller/account.php нет инфы для всех страниц.

    Спасибо всем кто откликнется! :)
     
  2. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Проблема актуальна...
     
  3. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    У тебя должен быть Frong Controller.

    В нем обрабатываешь все входящие запросы, собираешь нужные данные создаешь объект контроллера страницы и передаешь данные этому объекту, далее дополняешь данными для текущей страницы и передаешь во view/
    --- Добавлено ---
    Т.е. тебе нужна единая точка входа, чтобы избежать дублирования в каждокм контроллере страницы.
     
    AlexProg нравится это.
  4. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Спасибо! Это ближе к делу. Как быть с роутингом?
    [​IMG]
     
  5. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @webog, не знаю, как у тебя все устроено. У тебя самопис или какой фреймворк?
     
    AlexProg нравится это.
  6. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
  7. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Сложно дать однозначный ответ. Кстати, Front Controller а не Frog Controller я там опечатался.

    Тебе надо продумать этот механизм как интегрировать туда этот паттерн. Потому что только ты знаешь как все работает у тебя в системе.
     
    AlexProg нравится это.
  8. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Лягушачий контроллер, я уж подумал опять что-то новое придумали ))
     
    AlexProg нравится это.
  9. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Походу заново!? Т.к. сейчас так:
    application/system/routes/main.get.php
    PHP:
    1. # Change locale
    2. Route::get('/setlocale/(:any)', function($lang)
    3. {
    4.     $setlang = new Language();
    5.     $setlang->setLocale($lang);
    6. });
    7.  
    8. # Set referrals cookies from GET request
    9. Route::get('/ref/(:num)', function($key)
    10. {
    11.     $affiliate = new Controller_Affiliate();
    12.     $affiliate->refferalCookies($key);
    13. });
    14.  
    15. # Home page
    16. Route::get('/', function()
    17. {
    18.     $home = new Controller_Home();
    19.     $home->view();
    20. });
    21.  
    22. # News page
    23. Route::get('/news', function()
    24. {
    25.     $account = new Controller_News();
    26.     $account->News();
    27. });
    и application/system/routes/main.post.php Ну тут для POST обработка форм.

    Получается мне нужно как переделать роутинг свой, что бы для каждой страницы НЕ прописывать роутинг. Или если прописывать то как то иначе.

    Верно думаю?
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Я бы интегрировал туда события, и в каком-нибудь событии дописывал всё. Вот этот пакет мне нравится по событиям: http://event.thephpleague.com/2.0/
     
  11. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Как мне это поможет?

    Мне нужно как то вывести для всех контроллеров (главная,новости, контакты и т.д.) данные проверки авторизации и т.д.
    Вот есть application/class/class.controller.php основной и есть application/controller/home.php (class Controller_Home extends Controller) ну и т.д.

    Вопрос: Как во все контроллеры передать данные авторизации? Прописывать все во всех не предлагать ))

    P.S. Прописываю: мультиязычность, чекаю авторизацию, инфу в сайд бар(статистика с базы) и т.д. Во всех контроллерах это писать? А если имя изменится или добавить нужно будет? Во всех 100шт контроллерах дописывать?
     
  12. Dilon

    Dilon Активный пользователь

    С нами с:
    4 май 2014
    Сообщения:
    119
    Симпатии:
    4
    Адрес:
    соседний двор
    Очевидно, вы недостаточно понимаете возможности шаблонизатора. Если это так, советую найти и посмотреть в сети примеры работы с любым шаблонизатором.
     
  13. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Global? Пробовал...
    Много чего пробовал, не помогло.
    P.S. Дайте линк где почитать!?
     
  14. AlexsaiL

    AlexsaiL Активный пользователь

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    Посмотри видео уроки как используют MVC и шаблонизатор Smarty, думаю Twig не сильно отличается от него. Думаю ты найдешь тут решение.
     
    AlexProg нравится это.