Я не могу получить доступ к данным от контроллера для просмотра (tpl = шаблон) OpenCart

Не удается получить доступ к переменным данным из контроллера для просмотра (файл шаблона tpl) У меня очень простая функция

public function index() {
$message = "hello";
return $this->load->view('common/hello.tpl', $message );
} 


In view template i try to get $message variable but not defined

<?php echo $message; ?>

public function index() {
$message = "hello";
return $this->load->view('common/hello.tpl', $message );
} 

В шаблоне представления hello.tpl я пытаюсь получить переменную $message, но не определен

Это только пример. У меня есть модель, которая должна загружаться, но пока мне нужно только получить доступ от контроллера к представлению.... Помогите..

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
525
2

Ответы 2

В вашем заданном коде у шаблона нет никаких шансов узнать что-либо о переменной с именем $message, поскольку вы передаете только ценность этой переменной. Согласно еще одна ТАК-нить, вы должны добавить эту переменную в массив, подобный $data, следующим образом:

$data['message'] = $message;

Это делает содержимое $message доступным под тем же именем в вашем шаблоне. Если вы измените ключ (например, на $data['otherKey']), он станет доступен под $otherKey.

Затем передайте этот массив значений методу view:

return $this->load->view('common/hello.tpl', $data );

Хорошо, я пытаюсь использовать это в контроллере $this->data['message'] = $message; вернуть $this->load->view('common/reifenmontage.tpl', $data); } и это с учетом tpl <?php echo $message; ?> Не работает. Я пытаюсь установить также return $this->load->view('common/reifenmontage.tpl', $message); тоже не рабочая причина? всегда не определенная переменная

Alex Al 01.02.2019 14:17

@AlexAl Я еще раз отредактировал свой ответ после того, как просмотрел текущие соглашения. Эта ветка немного устарела...

Nico Haase 01.02.2019 14:23

Я пробую это, но уже не работает $data['message'] = $message; вернуть $this->load->view('common/reifenmontage.tpl', $data ); в представлении <?php echo $message; ?> Опять не заниженная переменная

Alex Al 01.02.2019 14:42

Хорошо, это reifenmontage.tpl — это мое настоящее имя файла, я пишу hello.tpl только для того, чтобы объяснить вам. У меня хорошие знания в MCV, я работаю на Laravel, но этот opencart меня очень смущает. hello.tpl предназначен для простоты понимания.... В чем проблема?

Alex Al 01.02.2019 14:55

Если бы я знал, что здесь происходит не так, я бы с удовольствием помог вам. Но сейчас у меня нет идей - извините

Nico Haase 01.02.2019 15:04

Мой hello/reifenmontage.tpl отображается во всплывающем окне? Может в этом проблема?

Alex Al 01.02.2019 15:15

Сначала вам нужно опубликовать, какую версию OC вы используете... Итак, если вы используете OC версии 1.x в файле контроллера, вы должны определить свои данные следующим образом: $this->data['message'] = 'hello'; и визуализировать tpl:

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/payment/hello.tpl')) {
            $this->template = $this->config->get('config_template') . '/template/payment/hello.tpl';
        } else {
            $this->template = 'default/template/payment/hello.tpl';
        }   

        $this->render(); 

если вы используете версию 2 или выше, вы должны определить: $data['message'] = 'hello'; и визуализировать в tpl lik:

return $this->load->view('extension/payment/hello', $data);

В tpl получить данные: <?php echo $message: ?> если OC версии 3.x.x где используются шаблоны twig... получить данные {{ message }}.

Это очень просто, если вы просто посмотрите, как это работает в соответствующей версии OC.

Итак, для OC2.3, как вы определили, должно быть: файл контроллера hello.php:

<?php
class ControllerCommonHello extends Controller {
    public function index() {

    $data['hello'] = 'Hello!!!';

        $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');

        $this->response->setOutput($this->load->view('common/hello', $data));
    }
}

hello.tpl примерно так:

?php echo $header; ?>
<div class = "container">

 <?php echo $hello; ?>


</div>
<?php echo $footer; ?>

Хорошо, я пробую это, но без успеха. Посмотрите мой код Класс контроллера ControllerCommonMotorTypeCustom расширяет Controller {public function index() { $data['message'] = 'TEST'; вернуть $this->load->view('common/motor_type_custom', $data); } } и мой tpl-файл представления <div> <h1> DSA </h1> <?php var_dump($message); ?> </div> подчеркнутая переменная Все работает, кроме переменной $message....??? Где ошибка? Ошибка не в названии файла...не знаю где?

Alex Al 05.02.2019 10:45

Может быть, я должен прописать этот маршрут где-нибудь?

Alex Al 05.02.2019 11:16

какая версия ОС?

K. B. 05.02.2019 11:29

// Определение версии('VERSION', '2.3.0.2');

Alex Al 05.02.2019 11:37

Что проблема? Может быть, URL не читает мою функцию? Я действительно не знаю причины. Я новичок в открытой корзине

Alex Al 05.02.2019 12:09

Я немного отредактировал свой первый ответ. Я надеюсь, что это должно помочь понять.

K. B. 05.02.2019 13:08

Неопределенные все переменные. Вероятно, это в моей структуре... Мой вызов (включение) моего шаблона во всплывающем окне Javascript.... может быть, эта проблема...

Alex Al 05.02.2019 14:40

Другие вопросы по теме

Похожие вопросы

Как получить сводные данные внутри красноречивого обратного вызова функции withCount?
Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданное «Y9gG??» (T_STRING). Внезапно появляется на изображениях и в таблицах стилей
Я хочу отфильтровать те же отображаемые данные в моей таблице данных
Вызов встроенного фильтра в пользовательском фильтре Twig
Разница между двумя массивами в php
Как использовать динамические данные в качестве параметра с функцией date_create_from_format в PHP
Выбор запроса mysqli, например, запрос уведомления, выбор из четырех других таблиц, которые ограничены определенным значением ключа и возвращают единственный результат
Php самый эффективный поиск массива объектов по полю объекта
Нужно регулярное выражение, которое оставило бы только имя файла в src для img
Получение избранного изображения публикации на другой странице