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

[Решено] Вывести переменную ?

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

Добрый день подскажите что не так делаю

 

создаю файл \catalog\controller\test\test.php 

 

в нем

 

<?
class ControllerTestTest extends Controller {
 
    //private $error = array();
    public function index() {
    
    $this->load->language('test/test');
    
    $this->data['var_name']='LALALA';
    
    }
}
?>

 

создаю файл шаблона  \catalog\view\theme\default\test\test.tpl

 

в нем пишу

 

<p><?php echo $var_name; ?></p>

 

Создаю в шаблоне файла  \catalog\view\theme\default\template\common\header.tpl

 

ссылку  <a href="index.php?route=test/test" >Test</a>

 

При нажатии на ссылку  выходит пустая страница ?! :(

 

 

 

 

 

 

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


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

Замените последние 2 строки следующим:

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

		$this->render(); 
	}
}
?>
P.S. Файл шаблона должен лежать здесь: catalog/view/theme/default/template/template/test.tpl

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


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

из контроллера нужно подключить шаблон, он автоматически не подключается

после чего сделать рендер

откройте любой контроллер и посмотрите как там все сделано

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


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

И там и так попробывал ..результат тот же ..белый экран ... если переименовываю файл tpl  то ошибку выводит нормально Notice: Error: Could not load template

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


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

В котроллере в первой строке

<?
замените на
<?php

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


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

В котроллере в первой строке

<?
замените на
<?php

 

Заменил ... результат тот же !  Что самое интересное ..попробовал в header существующего сайта ..переменную эту же вывести ..все выводит нормально ...Что тут не так не пойму ?

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


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

Синтаксическая ошибка может в контроллере допущена. Не закрытая кавычка или точка с запятой пропущена.

Или скобка где-нибудь лишняя.

См. логи сервера.

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


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

Синтаксическая ошибка может в контроллере допущена. Не закрытая кавычка или точка с запятой пропущена.

Или скобка где-нибудь лишняя.

См. логи сервера.

Ткните носом меня пожалуйста ..где можно посмотреть логи сервера ?!

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


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

Ткните носом меня пожалуйста ..где можно посмотреть логи сервера ?!

Как правило, в панели управления хостингом. У каждого хостера - по разному.

Вы покажите лучше полностью код из контроллера.

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


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

Как правило, в панели управления хостингом. У каждого хостера - по разному.

Вы покажите лучше полностью код из контроллера.

Немного изменил шаблон ..сейчас у сайта в админке выбран шаблон Space-cart

 

Ссылка вставлена на главную страницу в файле www\site\catalog\view\theme\Space-cart\template\common\header.tpl

 

</head>

<body>

<a href="index.php?route=pricelist/price" >Ссылка</a>

...

 

 

В файле www\site\catalog\controller\pricelist\price.php

 

<?php

class Controllerpricelistprice extends Controller {

 

    private $error = array();

    public function index() {

    

    $this->data['var_name']='LALALA';

    

    $this->template = 'Space-cart/template/pricelist/price.tpl';

        

    $this->render();

        

    }

}

?>

в файле www\site\catalog\view\theme\Space-cart\template\pricelist\price.tpl

 

<?php

  echo $var_name;

?>

 

И вот при нажатии на ссылку ...выходит пустая страница .

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


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

Вместо

$this->render();

Нужно использовать

$this->response->setOutput($this->render());

И в вашем случае

private $error = array();

на фиг не нужна...

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


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

Вместо

$this->render();

Нужно использовать

$this->response->setOutput($this->render());

И в вашем случае

private $error = array();

на фиг не нужна...

ах вон оно что михалыч )))) спасибо большое ..вот другое теперь интересно ... где берут документацию чтобы знать что надо именно так ?  $this->response->setOutput($this->render());  такую строку не видел вообще в существующем сайте

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


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

такую строку не видел вообще в существующем сайте

Взято из information/information.

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


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

Взято из information/information.

не понял ..это где такое ..скажите пожалуйста полную ссылку ?!

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


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

не понял ..это где такое ..скажите пожалуйста полную ссылку ?!

catalog/controller/information/information.php

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


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

catalog/controller/information/information.php

Есть такое да .... Скажите пожалуйста ...а я так понял что официальной документации полной для разработчиков нет вообще ?! кроме той что на http://docs.opencart.com/display/opencart/Loading+files+in+the+controller

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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