Как получить доступ к контекстному компоненту в классе контроллера?Php

Кемеровские программисты php общаются здесь
Anonymous
Как получить доступ к контекстному компоненту в классе контроллера?

Сообщение Anonymous »

Я сталкивался с этой проблемой каждый раз, когда писал модуль для Prestashop.
I Im On Versions> 8.1 (8.2.1 во время вопроса), и эта проблема может или не может применить к версии 9 и новым, для которого контекстный компонент был «рефакторирован» (согласно документации). $ this-> context .
, в то время как это, кажется, работает для классов, расширяющих класс модуля, когда используется в подклассе контроллера (например, класс, расширяющий ModuleAdminController).

Код: Выделить всё

// Some use statements

class MyController extends ModuleAdminController
{

public function __construct()
{
$this->bootstrap = true;
$this->list_no_link = true;
$this->context = Context::getContext();
$this->lang = false;
$this->allow_export = true;

// Some code

$statuses = OrderState::getOrderStates((int)$this->context->language->id);
foreach ($statuses as $status) {
$this->statuses_array[$status['id_order_state']] = $status['name'];
}

// Other code
}
}
< /code>
Работает вышеуказанный код. Я могу получить доступ к языковому свойству в контекстном компоненте. Тем не менее, это не должно потребоваться в соответствии с документацией, а также, что этот код идентифицируется как ошибка Valdator модуля Prestashop, поскольку «функции и методы Prestashop не используются должным образом». и Errorexception "попытка прочитать свойство" язык "на NULL". поднимается. (Я также проверяю с dd () 
).
У кого -нибудь есть, что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/797 ... ller-class

Вернуться в «Php»