Не удается получить доступ к переменным данным из контроллера для просмотра (файл шаблона 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, но не определен
Это только пример. У меня есть модель, которая должна загружаться, но пока мне нужно только получить доступ от контроллера к представлению.... Помогите..






В вашем заданном коде у шаблона нет никаких шансов узнать что-либо о переменной с именем $message, поскольку вы передаете только ценность этой переменной. Согласно еще одна ТАК-нить, вы должны добавить эту переменную в массив, подобный $data, следующим образом:
$data['message'] = $message;
Это делает содержимое $message доступным под тем же именем в вашем шаблоне. Если вы измените ключ (например, на $data['otherKey']), он станет доступен под $otherKey.
Затем передайте этот массив значений методу view:
return $this->load->view('common/hello.tpl', $data );
@AlexAl Я еще раз отредактировал свой ответ после того, как просмотрел текущие соглашения. Эта ветка немного устарела...
Я пробую это, но уже не работает $data['message'] = $message; вернуть $this->load->view('common/reifenmontage.tpl', $data ); в представлении <?php echo $message; ?> Опять не заниженная переменная
Хорошо, это reifenmontage.tpl — это мое настоящее имя файла, я пишу hello.tpl только для того, чтобы объяснить вам. У меня хорошие знания в MCV, я работаю на Laravel, но этот opencart меня очень смущает. hello.tpl предназначен для простоты понимания.... В чем проблема?
Если бы я знал, что здесь происходит не так, я бы с удовольствием помог вам. Но сейчас у меня нет идей - извините
Мой hello/reifenmontage.tpl отображается во всплывающем окне? Может в этом проблема?
Сначала вам нужно опубликовать, какую версию 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....??? Где ошибка? Ошибка не в названии файла...не знаю где?
Может быть, я должен прописать этот маршрут где-нибудь?
какая версия ОС?
// Определение версии('VERSION', '2.3.0.2');
Что проблема? Может быть, URL не читает мою функцию? Я действительно не знаю причины. Я новичок в открытой корзине
Я немного отредактировал свой первый ответ. Я надеюсь, что это должно помочь понять.
Неопределенные все переменные. Вероятно, это в моей структуре... Мой вызов (включение) моего шаблона во всплывающем окне Javascript.... может быть, эта проблема...
Хорошо, я пытаюсь использовать это в контроллере $this->data['message'] = $message; вернуть $this->load->view('common/reifenmontage.tpl', $data); } и это с учетом tpl <?php echo $message; ?> Не работает. Я пытаюсь установить также return $this->load->view('common/reifenmontage.tpl', $message); тоже не рабочая причина? всегда не определенная переменная