Перейти к содержанию

Рекомендуемые сообщения

Можно ли сделать вызов на методы моделя из .tlp если да то как сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Оставьте tpl в покое, в контроллере делайте обращение к модели.

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
7 часов назад, mega94 сказал:

Можно ли сделать вызов на методы моделя из .tlp если да то как сделать?

Можно, но что за бред? онли  mvc..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том что мне нужно передать значении из шаблона при загрузки страницы. Сделал свою функцию в контролере который делает запись к базе и вернет обратно уже из базы.

function translateYandex($text){
	$this->model_query_query->getTranslate($text) 
}

Вызов из view:

translateYandex('text');

получаю ошибку:

Fatal error: Using $this when not in object context in

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 часов назад, mega94 сказал:

 

Дело в том что мне нужно передать значении из шаблона при загрузки страницы.

 

может  вам нужен аякс?  php работает на сервере.  если нужно что-то передать  с клиента на сервер, используется аякс.(favascript передает данные на сервер, php обрабатывает) все это происходит без перезагрузки страницы.

если, я вас правильно понял.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
50 минут назад, mega94 сказал:

Нужен без аякса)

вы хотите, когда страница уже загрузилась в браузер, сформировались какие-то данные от стороннего скрипта js, передать эти данные в php(контроллер)?

тогда только аякс или get(по ссылке).  но get c перезагрузкой страницы. перешли по ссылке  обработали данные, перенаправили обратно, а там уже новые данные.  и что,  опять по кругу? вы вообще понимаете, что php на сервере, а javascript на клиенте?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

похоже вы меня не совсем поняли, я хотел связь между model и view без участие controller или вообще вызвать:

function translateYandex($text){
	$this->model_query_query->getTranslate($text) 
}

метод модуля в теле функции в controller

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, mega94 сказал:

между model и view без участие controller

зачем? не нужно так делать. вам уже писали выше.

2 часа назад, mega94 сказал:

метод модуля в теле функции в controller

это не понял

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, mega94 сказал:

похоже вы меня не совсем поняли, я хотел связь между model и view без участие controller или вообще вызвать:


function translateYandex($text){
	$this->model_query_query->getTranslate($text) 
}

метод модуля в теле функции в controller

 

1. Ваш метод translateYandex($text) ничего не возвращает. Чтобы он вернул, необходимо поставить return данные;

function translateYandex($text){
	$array = $this->model_query_query->getTranslate($text);
    return $array;
}

В этом случае метод вернёт данные.

 

2. Обратится из представления к методу  контроллера у Вас не получится.

Чтобы вернуть данные в шаблон, просто поместите их в массив.

к примеру вот так:

 

$data['yandex_text'] = $this->translateYandex($text);

 

В самом шаблоне можете обратиться вот так: <php print  $yandex_text; ?>

 

Если вы хотите передать данные из шаблона при загрузке, нужно использовать Ajax и всё равно не в обход контроллера.

Изменено пользователем Fortunes

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, mega94 сказал:

я хотел связь между model и view без участие controller

В двойке не получится: тут шаблон изолирован от контекста.

Можно разве что попробовать передать модель в шаблон через $data вытянув её в контроллере через вызов:

$this->registry->get('model_path_class');

На вашем примере model_path_class будет model_query_query.

 

 

18 часов назад, ArtemPitov сказал:

MVC и только MVC

 

11 часов назад, Fortunes сказал:

онли  mvc..

 

Модель во вью никак не противоречит MVC! Не стоит путать модель и запросы к базе. В нормальном мире модель - это воплощение реального объекта со всеми его свойствами и поведением. И в нормальном мире в контроллерах не переливают значения из модели в промежуточные массив, чтоб потом передать в шаблон, а передают в шаблон экземпляр самой модели, при этом никакие запросы к базе не отправляются до момента реального использования полей модели (lazy loading).

 

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Только что, Dotrox сказал:

Модель во вью никак не противоречит MVC! Не стоит путать модель и запросы к базе. В нормальном мире модель - это воплощение реального объекта со всеми его свойствами и поведением. И в нормальном мире в контроллерах не переливают значения из модели в промежуточные массив, чтоб потом передать в шаблон, а передают в шаблон экземпляр самой модели, при этом никакие запросы к базе не отправляются до момента реального использования полей модели (lazy loading).

 

Имелось ввиду что не стоит изобретать велосипед, а делать нормально. Можно тупо заинклюдить модель к шаблону, ну что это за бред?

Изменено пользователем Fortunes

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Fortunes сказал:

не стоит изобретать велосипед, а делать нормально

Не нормально, а согласно архитектуры ОК, потому что я не считаю, что то, как это реализовано в ОК - можно назвать нормальным.

 

2 минуты назад, Fortunes сказал:

Можно тупо заинклюдить модель к шаблону, ну что это за бред?

Вот это уже как раз будет нарушением MVC. И у меня есть сомнения, что вообще будет работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Только что, Dotrox сказал:

Не нормально, а согласно архитектуры ОК, потому что я не считаю, что то, как это реализовано в ОК - можно назвать нормальным.

 

Вот это уже как раз будет нарушением MVC. И у меня есть сомнения, что вообще будет работать.

Работать будет, просто создать объект класса и обратится к методу. Естественно это нарушение MVC, но автор не хочет касаться контроллера, не понятно почему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
9 минут назад, Fortunes сказал:

автор не хочет касаться контроллера, не понятно почему

Насколько я понимаю, @mega94 хочет использовать в шаблонах локализацию, как это происходит в нормальных фреймворках, то есть, когда в шаблоне вписан текст на базовом языке, но обёрнут в метод локализатора, который возвращает этот текст на текущем активном языке.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Dotrox сказал:

Модель во вью никак не противоречит MVC! Не стоит путать модель и запросы к базе. В нормальном мире модель - это воплощение реального объекта со всеми его свойствами и поведением. И в нормальном мире в контроллерах не переливают значения из модели в промежуточные массив, чтоб потом передать в шаблон, а передают в шаблон экземпляр самой модели, при этом никакие запросы к базе не отправляются до момента реального использования полей модели (lazy loading).

 

Ну как бы человек спросил 

Цитата

Можно ли сделать вызов на методы моделя из .tlp если да то как сделать?

 

Покажите мне где сказано что в архитектуре MVC в V можно вызывать методы прямиком с M ? 

 

ЗЫ// Да, я знаю что контролеры в опенкарте не правильно используются и самому это не нравится. " Fat Stupid Ugly Controllers"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, Dotrox сказал:

как это происходит в нормальных фреймворках

ДА?

Ну так сделайте обертку в чем проблема?

 

Не бывает нормальных. В данном случае ОС -нормальный, все остальные - ненормальные

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, ArtemPitov сказал:

Покажите мне где сказано что в архитектуре MVC в V можно вызывать методы прямиком с M ? 

Э.. есть понятие как активный View, в OC  - view - пассивный

вот пример

 

<? echo $this->route('header') ?>

<? echo $this->route('content') ?>

<? echo $this->route('footer') ?>

 

Не будем обсуждать, но разделение есть - модель активная - она генерит  вызовы контроллеров

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
24 минуты назад, chukcha сказал:

Ну так сделайте обертку в чем проблема?

Ну, @mega94 , судя по всему, это и пытается сделать.

 

 

20 минут назад, chukcha сказал:

<? echo $this->route('header') ?>

Не делай так! Короткий тег - это вообще моветон, а в данном случае совсем жуть получается, ибо есть "<?=" (это особый случай: начиная с 5.4 этот тег не зависит от значения short_open_tag).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, это я от лени, и просто как пример ,

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за интерес к теме, в контроллере есть переменная $res в ней находится json все информации, сделал

$data['res'] = $res;

и все, все нужные данные получаю уже с .tpl в том числе язык без перевода. Я хотел пропустит данные через перевод напрямую из $res а не делать дубликат с массивами в контроллере и потом вызвать этот дубликат из .tpl хотя сейчас так и сделал.

Изменено пользователем mega94

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.