Jump to content
Sign in to follow this  
ananas999

[К разработчику] Ошибка в логах от модуля testimonial

Recommended Posts

Модуль testimonial (вывод отзывов)

 

В логах:

 

2016-11-26 0:13:56 - PHP Notice:  Undefined variable: json in /home/users/4/user/domains/site.ru/catalog/controller/testimonial/testimonial.php on line 185

 

 

Акцент на эту строку:         $this->response->setOutput(json_encode($json));

 

Как исправить?

Edited by ananas999

Share this post


Link to post
Share on other sites

Переменная $json неизвестна. Т.е. выше в коде не используеться.

 

Чтоб сказать что-то конкретней нужен весь код в файле.

  • +1 1

Share this post


Link to post
Share on other sites

Переменная $json неизвестна. Т.е. выше в коде не используеться.

 

Чтоб сказать что-то конкретней нужен весь код в файле.

 

 
<?php
class ControllerTestimonialTestimonial extends Controller
{
    private $error = array();
    private $moduleName = 'testimonial';
    private $moduleModel = 'model_module_testimonial';
    private $moduleModelPath = 'module/testimonial';
    private $modulePath    = 'testimonial/testimonial';
    private $moduleVersion = '1.4.1';
 
    public function index() {
        
        $lang_ar = $this->load->language($this->moduleModelPath);
 
        foreach($lang_ar as $key => $item){
            $data[$key] = $item;
        }
 
        $data['breadcrumbs'] = array();
 
        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('text_home'),
            'href' => $this->url->link('common/home')
        );
 
        $data['heading_title'] = $this->language->get('heading_title');
 
        $this->document->setTitle($data['heading_title']);
 
        $this->document->addScript('catalog/view/javascript/jquery/magnific/jquery.magnific-popup.min.js');
        $this->document->addStyle('catalog/view/javascript/jquery/magnific/magnific-popup.css');
        
        $data['text_login'] = sprintf($this->language->get('text_login'), $this->url->link('account/login', '', 'SSL'), $this->url->link('account/register', '', 'SSL'));
 
        $this->load->model($this->moduleModelPath);
 
        $data['review_status'] = $this->config->get('config_review_status');
 
        if ($this->config->get('config_review_guest') || $this->customer->isLogged()) {
            $data['review_guest'] = true;
        } else {
            $data['review_guest'] = false;
        }
 
        if ($this->customer->isLogged()) {
            $data['customer_name'] = $this->customer->getFirstName() . ' ' . $this->customer->getLastName();
        } else {
            $data['customer_name'] = '';
        }
 
        $data['breadcrumbs'][] = array(
            'text' => $data['heading_title'],
            'href' => $this->url->link($this->modulePath)
        );
        
        $data['review'] = $this->url->link($this->modulePath . '/review');
        $data['write'] = $this->url->link($this->modulePath . '/write');
 
        if(substr(VERSION, 0, 7) > '2.1.0.1'){
            if ($this->config->get($this->config->get('config_captcha') . '_status') && in_array('testimonial', (array)$this->config->get('config_captcha_page'))) {
                $data['captcha'] = $this->load->controller('captcha/' . $this->config->get('config_captcha'));
            } else {
                $data['captcha'] = '';
            }
        }else{
            if ($this->config->get('config_google_captcha_status')) {
                $this->document->addScript('[url=https://www.google.com/recaptcha/api.js');]https://www.google.com/recaptcha/api.js');[/url]
                $data['site_key'] = $this->config->get('config_google_captcha_public');
            } else {
                $data['site_key'] = '';
            }
        }
 
        $data['column_left'] = $this->load->controller('common/column_left');
        $data['column_right'] = $this->load->controller('common/column_right');
        $data['content_top'] = $this->load->controller('common/content_top');
        $data['content_bottom'] = $this->load->controller('common/content_bottom');
        $data['footer'] = $this->load->controller('common/footer');
        $data['header'] = $this->load->controller('common/header');
 
        if(substr(VERSION, 0, 7) > '2.1.0.2'){
            $this->response->setOutput($this->load->view($this->modulePath, $data));
        }else{
            if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/' . $this->modulePath . '.tpl')) {
                $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/' . $this->modulePath . '.tpl', $data));
            } else {
                $this->response->setOutput($this->load->view('default/template/' . $this->modulePath . '.tpl', $data));
            }
        }
    }
 
    public function review() {
        $this->load->language($this->moduleModelPath);
        $this->load->model($this->moduleModelPath);
 
        $data['text_no_reviews'] = $this->language->get('text_no_reviews');
 
        if (isset($this->request->get['page'])) {
            $page = $this->request->get['page'];
        } else {
            $page = 1;
        }
 
        $data['reviews'] = array();
 
        $review_total = $this->{$this->moduleModel}->getTotalReviews();
 
        $results = $this->{$this->moduleModel}->getReviews(($page - 1) * 5, 5);
 
        foreach ($results as $result) {
            $data['reviews'][] = array(
                'author'     => $result['author'],
                'text'       => nl2br($result['text']),
                'rating'     => (int)$result['rating'],
                'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added']))
            );
        }
 
        $pagination = new Pagination();
 
        $pagination->total = $review_total;
        $pagination->page = $page;
        $pagination->limit = 5;
        $pagination->url = 'index.php?route=' . $this->modulePath . '/review&page={page}';
 
        $data['pagination'] = $pagination->render();
 
        $data['results'] = sprintf($this->language->get('text_pagination'), ($review_total) ? (($page - 1) * 5) + 1 : 0, ((($page - 1) * 5) > ($review_total - 5)) ? $review_total : ((($page - 1) * 5) + 5), $review_total, ceil($review_total / 5));
 
        if(substr(VERSION, 0, 7) > '2.1.0.2'){
            $this->response->setOutput($this->load->view($this->modulePath . '_list', $data));
        }else{
            if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/' . $this->modulePath . '_list.tpl')) {
                $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/' . $this->modulePath . '_list.tpl', $data));
            } else {
                $this->response->setOutput($this->load->view('default/template/' . $this->modulePath . '_list.tpl', $data));
            }
        }
    }
 
    public function write() {
        
        $this->load->language($this->moduleModelPath);
 
        if ($this->request->server['REQUEST_METHOD'] == 'POST') {
            
            if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 25)) {
                $json['error'] = $this->language->get('error_name');
            }
 
            if ((utf8_strlen($this->request->post['text']) < 25) || (utf8_strlen($this->request->post['text']) > 3000)) {
                $json['error'] = $this->language->get('error_text');
            }
            if (empty($this->request->post['rating']) || $this->request->post['rating'] < 0 || $this->request->post['rating'] > 5) {
                $json['error'] = $this->language->get('error_rating');
            }
 
            if ($this->config->get('config_google_captcha_status')) {
                $recaptcha = file_get_contents('[url=https://www.google.com/recaptcha/api/siteverify?secret=]https://www.google.com/recaptcha/api/siteverify?secret=[/url]' . urlencode($this->config->get('config_google_captcha_secret')) . '&response=' . $this->request->post['g-recaptcha-response'] . '&remoteip=' . $this->request->server['REMOTE_ADDR']);
 
                $recaptcha = json_decode($recaptcha, true);
 
                if (!$recaptcha['success']) {
                    $json['error'] = $this->language->get('error_captcha');
                }
            }
 
            if ($this->config->get($this->config->get('config_captcha') . '_status') && in_array('testimonial', (array)$this->config->get('config_captcha_page'))) {
                $captcha = $this->load->controller('captcha/' . $this->config->get('config_captcha') . '/validate');
 
                if ($captcha) {
                    $json['error'] = $captcha;
                }
            }
 
            if (!isset($json['error'])) {
                $this->load->model($this->moduleModelPath);
                $json['success'] = $this->language->get('text_success');
 
                $this->{$this->moduleModel}->addReview($this->request->post);
            }
        }
 
        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }
}

Share this post


Link to post
Share on other sites

Share this post


Link to post
Share on other sites

Эти последние строки кода

     }
        }
 
        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }
}

замените на это. 

      }
        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
      }
    }
}

Ошибка должна исчезнуть. 

 

В функцию write() не приходят данные из формы, туда надо копать. Странновато написана эта функция... Или автор реально перепутал скобки, или забыл дописать else...

Edited by Slavikovna
  • +1 1

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.