Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

arni

Новачок
  
  • Публікації

    5
  • З нами

  • Відвідування

arni's Achievements

Newbie

Newbie (1/14)

  • First Post
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

0

Репутація

  1. Так нагляднее: Получаем модель в контроллере: $this->load->model('checkout/order'); роут у нас получится checkout/order. Это не метод, который вызывает событие, а только класс. При получении модели, методы не указываются в роуте! К моменту выполнения следующей строки кода в классе модели, событие уже прошло (и то что перед и то что после) Открываем файл самой модели catalog\model\checkout\order.php - там несколько методов. Далее в контроллере вызов одного такого метода (getOrder) данной модели: $order_info = $this->model_checkout_order->getOrder($order_id); как видите, методы уже загружены, к ним есть доступ, но эта строка кода вызова отдельного метода уже не приводит к возникновению событий. А строка загрузки модели не содержит какой-либо метод, т.к. грузит все методы. В результате из своего кода ни в роуте ни в другой переменной мы не можем получить метод который вызывает событие, т.к. метод модели событие не вызывает, а в роуте для модели метод не прописывается.
  2. Вы не внимательно прочитали - я это уже описал выше: "аргумент $route, который получит метод модуля, будет содержать extension/extension" extension/extension - тут нет названия метода, тут есть только класс модели, который его вызвал (не всегда класс содержит только один метод). А я спрашивал про метод! Т.к. вы писали "проверяете в нем какой метод его вызвал". Хотя, по-моему вы просто перепутали класс с методом. Класс, конечно, можно получить из роута, только это далеко не название метода. Смысла узнать какой класс вызвал событие из метода своего модуля не много, т.к. когда устанавливается обработчик события, он уже цепляется на определенный класс. Другое дело, если бы, как вы писали, какой-то отдельный метод класса вызывал обработчик события, тогда было бы можно легко изменить этот метод под свои нужды. Вот в этом мой вопрос и состоял. Т.к. я пока не придумал легкого способа подмены одного из методов класса, который вызвал событие.
  3. Данные передаются не в событие, а в обработчик события (метод trigger). В зависимости от типа события (для контроллера, модели и тд.) в обработчик передаются разные данные, но в любом случае, среди этих данных нет названия метода который вызвал событие. Т.к. я уже писал - не метод вызывает событие, а загрузка класса целиком со всеми его методами. Пример события: catalog/model/extension/extension/before сработает перед загрузкой модели extension/extension. аргумент $route, который получит метод модуля, будет содержать extension/extension, но вовсе не название какого-либо метода события. Вообще вызов метода модели происходит уже после того, как отработает наш модуль. Того я спрашиваю, как это вы собираетесь сделать: "проверяете в нем какой метод его вызвал"? Т.к. на момент выполнения своего метода, повешенного обработчиком на определенное событие, никакой метод того события еще не будет выполнен. Смотрите файл system\engine\loader.php, там видно что передается в обработчик события, и это не метод, который его вызвал.
  4. Это причем? вы пишите: "создаете событие и проверяете в нем какой метод его вызвал и выполняете свой запрос" Под "создаете событие", насколько я понял, вы понимаете создание обработчика события , который повесит выполнение нужного метода/класса своего модуля на определенное событие - например подключение модели. Вот меня интересует как в своем методе, который будет вызван, вы собираетесь проверить "какой метод его вызвал"? Ведь событие не вызывается каким-либо методом, событие вызывается подключением всего класса целиком, например так $this->load->model('account/address');
  5. Каким образом это можно осуществить? Если вы про __METHOD__, то получите не метод который вызвал событие, а метод из своего модуля, где вы эту строку и прописали.
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.