Я хочу написать функцию для catalog->controller->checkout->cart.php в Opencart 2.3.0.2. Я уже написал логику для проверки priduct_id и действий, которые необходимо предпринять, если будет найден определенный идентификатор продукта. Теперь я хочу вынести эту логику в отдельную функцию в отдельный файл php, чтобы она стала более управляемой.
Я создал функцию в файле php в разделе system-> helper и загрузил ее из startup.php. Затем я могу вызвать эту функцию из cart.php, но ссылка на переменную $this будет потеряна, даже если я передам $this этой функции.
Мой урезанный код выглядит так: cart.php
//some code before this
if (!$json) {
// Check if Product is Addon
test($this);
//more code after this
пользовательская функция.php
function test($this) {
// print_r("Test Called");
$temp = $this->request->post['product_id'];
if ($this->request->post['product_id'] == 142) {
$json['success'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart'));
$product_options = $this->model_catalog_product->getProductOptions($this->request->post['product_id']);
$product_option_id = $product_option['product_option_id'];
//more code
Я получаю сообщение об ошибке
$this->request->post['product_id'];
Может кто-нибудь сказать мне, как вызвать пользовательскую функцию из отдельного файла php, сохраняя ссылку на переменную $this.