ФорумПрограммированиеPHP для идиотов → Узнать имя контроллера до инициализации конфигурацион. данных

Узнать имя контроллера до инициализации конфигурацион. данных

  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 28 апреля 2010 г. 17:17

    Итак, ситуация.
    В самом index.php после инициализации конф. данных из файла, а затем запуска всего процесса - я МОГУ узнать истинное имя контроллера посредством

    $application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini');

    $application->bootstrap()->run();

    $c = Zend_Controller_Front::getInstance();

    $cName = $c->getDefaultControllerName();


    НО мне нужно узнать имя текущего контроллера ПЕРЕД $application->bootstrap()->run();
    Сейчас мне выдает "index". Но это неправильно поскольку текущее имя контроллера - "page".

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

    Но мне нужно както узнать это имя до инициализации. Тоесть грубо говоря в самом начале (позагружав автозагрузчиком некоторые необходимые классы).

    Вопрос - как это можно(если вообще возможно) сделать?
    Зараннее благодарю.

  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 28 апреля 2010 г. 17:24, спустя 6 минут 40 секунд

    (позагружав автозагрузчиком некоторые необходимые классы).
    Подключить своё пространство имён классов нельзя?
    Регистрируйте плагин по завершению роутера, но лучше см. выше.
    Спустя 122 сек.
    public function routeShutdown(Zend_Controller_Request_Abstract $request)
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 28 апреля 2010 г. 17:24, спустя 1 секунду

    Ewg777, Да не в том дело. Классы то ведь загружаються удачно. Да и не буду я менять там это сейчас, я этот проект лишь продолжаю деплойить… и важно решить пока самое необходимое
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 28 апреля 2010 г. 17:39, спустя 15 минут 34 секунды

    я могу конечно в обход АПИ зенда напрямую проверять через Реквест_ури типа
    if(strpos($_SERVER["REQUEST_URI"],"page") > 0)
    echo "'page' is current controller";


    Но мне кажется это уж слишком…
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 28 апреля 2010 г. 17:46, спустя 6 минут 45 секунд


    я могу конечно в обход АПИ зенда напрямую проверять через Реквест_ури типа
    if(strpos($_SERVER["REQUEST_URI"],"page") > 0)
    echo "'page' is current controller";


    Но мне кажется это уж слишком…

    рано Зенд. Рано. Что будет на странице
    /index/ya-false-page
    ?
    Решительно не пойму что именно вопрашается?
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 28 апреля 2010 г. 17:58, спустя 11 минут 17 секунд

    Ewg777, узнать имя контроллера в самом начале index.php)).. Может есть какието статические методы какихто классов.
    Тоесть ДО запуска процесса…
    как еще объяснить….
    Спустя 76 сек.
    при чем тут рано.
    Я например знаю, что у меня в екшенах нету слова page. Да и потом - это лишь предрассудок. Если нужно, то я тщательнее проверю: поставлю регулярку. Это не вопрос
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 28 апреля 2010 г. 17:59, спустя 1 минуту 40 секунд


    Ewg777, узнать имя контроллера в самом начале index.php)).. Может есть какието статические методы какихто классов.
    Тоесть ДО запуска процесса…
    как еще объяснить….
    Спустя 76 сек.
    при чем тут рано.
    Я например знаю, что у меня в екшенах нету слова page. Да и потом - это лишь предрассудок. Если нужно, то я тщательнее проверю: поставлю регулярку. Это не вопрос
    Только после того как отработает роутер, а это routeShutdown. Поэтому расспрашиваю "зачем???".
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 28 апреля 2010 г. 18:05, спустя 5 минут 25 секунд

    Ewg777, У меня сайт написан на фреймворке. Тимлид дал задание интегрировать цмс которая тоже написана на фреймворке.
    Там сложная схема работы и очень отличается от той что сейчас на сайте. Обьединять все настройки воидину и переписывать каждый файл(а там их немало) - я не рискую да и времени нету.
    Итоговое решение - определять когда именно нужно запускать цмс с ее настройками и файлами в индекс.пхп, а когда сам сайт. Самый простой и в меру безопасный вариант.
    А так как я знаю по каких именно контроллерах должна отвечать цмс, то я могу их извлекать и анализировать…
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 28 апреля 2010 г. 18:13, спустя 8 минут

    Тоесть я так понимаю, что нужно вручну вызывать это событие.. (наверное посредством создания своего кастомного класа, который наследует определенный интерфейс)…
    Кажется мне не совсем целесообразно…

Пожалуйста, авторизуйтесь, чтобы написать комментарий!