2013-07-02 5 views
1

Я пытаюсь создать простую функцию, которая может быть выполнена на на любой странице.Как создать глобальную функцию в opencart

function something() { 
    $string = 'Hello World'; 
    return $string; 
} 

Допустим, я нахожусь в странице категории, я бы просто позвонить $a = something();, и было бы вернуть мое значение

Платформа: OpenCart

P.S. Я все еще изучаю архитектуру MVC.

+0

Изучение того, как определить функцию и обучение шаблону проектирования MVC, составляет приблизительно 3 года. Этот вопрос не имеет ничего общего с MVC (удаленный тег). –

+0

Возможный дубликат и ответ можно найти здесь. http://stackoverflow.com/questions/13052307/custom-helper-functions-in-opencart –

ответ

4

Поскольку вы хотите понять и узнать о системе MVC, правильным способом было бы создать свой собственный вспомогательный файл и поместить его в /system/helper/, а затем добавить помощника до system/startup.php. Посмотрите на то, как json.php/utf8.php сделаны в них в качестве руководства

+0

спасибо .. работайте как шарм ... проще создать новую функцию и можно вызвать эту функцию в любом месте ..: D – rusly

1

Вы можете создать функцию в любой библиотеке OpenCart (система/библиотека /)

В качестве примера в системе/библиотеки/document.php

function something() { 
    $string = 'Hello World'; 
    return $string; 
} 

и использовать в любом месте в openсart, как

$something=$this->document->something(); 

P/S код в header.tpl не будет работать в Ajax или прямой запрос

+0

Хорошая точка в запросе AJAX.Хотя да, можно создавать методы в классе библиотеки, это было бы целесообразно только в том случае, если метод, связанный с этим классом. В противном случае это скорее «взлом», чем реальная практика, которую следует поощрять. –

+0

Все зависит от конечной цели. Я бы использовал модель MVC и модель $ this-> load-> ('xxx/xxx'); $ This-> model_xxx_xxx-> что-то(); – OcJoy

+0

Да, это зависит от цели, но в конечном счете, если ваша функция не связана с файлом библиотеки, которую вы редактируете, ее вообще не должно быть. Кроме того, на основе OP, требующего простой функции, а не метода объекта, имеет смысл просто использовать вспомогательный файл (как это делает сам OpenCart) и включить в файл 'system/startup.php' для поддержания согласованности –

3

Создайте новый файл в системе/library/yourclassname.php с тем же кодом.

Также добавьте имя класса вашей функции, как показано ниже:

class yourclassname { 

    function something() { 
    $string = 'Hello World'; 
    return $string; 
    } 
} 

и добавить его в свой файл index.php, как показано ниже;

$registry->set('yourclassname', new yourclassname($registry)); 

Наконец, добавьте его в файл startup.php, как показано ниже:

require_once(DIR_SYSTEM . 'library/yourclassname.php'); 

Вы можете использовать его в любом месте с $ this-> yourclassname-> что-то();

Thats Все ..

+0

отлично работал , Спасибо – Anonymous

0

Ответим Matricore работал отлично для меня, но я также должен был построить новый класс с конфигурации и БД доступны.

код ниже:

class yourclassname { 

    public function __construct($registry) { 
     $this->config = $registry->get('config'); 
     $this->db = $registry->get('db'); 
    } 

} 

Вы можете выполнять запросы через $ this-> db-> запрос ("Ваш запрос здесь");

Смежные вопросы