Новичок
Покинул форум
Сообщений всего: 2
Дата рег-ции: Янв. 2012
Помог: 0 раз(а)
|
Всем привет!
У меня возникла проблема. На сайте есть разделы, но ссылки не генерируются. Должны быть вида example.com/index.php?DepartmentId=1 , но ссылки ведут просто на гланую страницу example.com/
Если ввожу вручную адрес в строку, то запрос работает нормально появляются категории.
Вот листинги:
departments_list.phpPHP:
скопировать код в буфер обмена
<?PHP // Отвечает за список отделов class DepartmentsList { /* Public-переменные, доступные в шаблоне Smarty departments_list.tpl */ public $mSelectedDepartment = 0; public $mDepartments; // Конструктор считывает строку запроса как параметр public function __construct() { /* Если в строке запроса есть DepartmentId, мы посещаем отдел */ if (isset($_GET['DepartmentId'])) $this->mSelectedDepartment = (int)$_GET['DepartmentId']; } /* Вызывает метод уровня логики приложения для считывания списка отделов и создания соответствующих ссылок */ public function init() { // Получаем список отделов из уровня логики приложения $this->mDepartments = Catalog::GetDepartments(); // Создаем ссылки на отделы for ($i = 0; $i < count($this->mDepartments); $i++) $this->mDeparments[$i]['link_to_department'] = Link::ToDepartment($this->mDepartments[$i]['department_id']); } } ?>
departments_list.tplPHP:
скопировать код в буфер обмена
{* departments_list.tpl *} {load_presentation_object filename="departments_list" assign="obj"} {* Начало списка разделов *} <div class="box"> <p class="box-title">Разделы</p> <ul> {* Перебираем элементы списка разделов *} {section name=i loop=$obj->mDepartments} {assign var=selected value=""} {* Преверяем, выделен ли раздел, чтобы определить, какой стиль CSS использовать *} {if ($obj->mSelectedDepartment == $obj->mDepartments[i].department_id)} {assign var=selected value="class=\"selected\""} {/if} <li>{* Генерируем ссылку для нового раздела в списке *} <a {$selected} href="{$obj->mDepartments[i].link_to_department}"> {$obj->mDepartments[i].name} </a> </li> {/section} </ul> </div>
application.phpPHP:
скопировать код в буфер обмена
<?PHP // Ссылка на библиотеку Smarty require_once SMARTY_DIR . 'Smarty.class.php'; // Класс, расширяющий Smarty, используется для обработки // и отображения файлов Smarty class Application extends Smarty { // Конструктор класса public function __construct(){ // Вызов конструктора Smarty parent::__construct(); // Подавляем ошибки вызванные Smarty // $this->muteExpectedErrors(); //$this->error_reporting = E_ALL & ~E_NOTICE; // Меняем папки шаблонов по умолчанию $this->setTemplateDir(TEMPLATE_DIR); $this->setCompileDir(COMPILE_DIR); $this->setConfigDir(CONFIG_DIR); $this->setPluginsDir('./libs/smarty/plugins/'); $this->addPluginsDir('./presentation/smarty_plugins/'); } } ?>
link.phpPHP:
скопировать код в буфер обмена
<?PHP public static function Build($link) { $base = 'http://' . getenv('SERVER_NAME'); // Если константа HTTP_SERVER_PORT определена и значение отличается // от используемого по умолчанию... if (defined('HTTP_SERVER_PORT') && HTTP_SERVER_PORT != '80') { // Добавляем номер порта $base .= ':' . HTTP_SERVER_PORT; } $link = $base . VIRTUAL_LOCATION . $link; // Escape-символы html } public static function ToDepartment($departmentId) { $link = 'index.php?DepartmentId=' . $departmentId; return self::Build($link); } public static function ToCategory($departmentId, $categoryId) { $link = 'index.php?DepartmentId=' . $departmentId . '&CategoryId=' . $categoryId; return self::Build($link); self::Build($link); } } ?>
function.load_presentation_object.phpPHP:
скопировать код в буфер обмена
<?PHP // Подключаем функцию из подключаемых файлов должны // именоваться smarty_имя_типа function smarty_function_load_presentation_object($params, $smarty) { require_once PRESENTATION_DIR . $params['filename'] . '.php'; $params['filename']))); // Создаем объект представления $obj = new $className(); $obj->init(); } // Присваиваем переменную шаблона $smarty->assign($params['assign'], $obj); } ?>
На месте ссылок появляется такое сообщение:
ERRNO: 8
TEXT: Undefined index: link_to_department
LOCATION: C:\xampp\htdocs\estore\presentation\templates_c\9d0f0a98f3c9bf763e381562817f26af91324cdb.file.departments_list.tpl.php, line 67, at January 23, 2012, 3:17 pm
Showing backtrace:
call_user_func(Array[2], "8", "Undefined index: link_to_department", "C:\xampp\htdocs\estore\presentation\templates_c\9d0f0a98f3c9bf76...", "67", Array[1]) # line 1409, file: C:\xampp\htdocs\estore\libs\smarty\Smarty.class.php
Smarty.mutingErrorHandler("8", "Undefined index: link_to_department", "C:\xampp\htdocs\estore\presentation\templates_c\9d0f0a98f3c9bf76...", "67", Array[1]) # line 67, file: C:\xampp\htdocs\estore\presentation\templates_c\9d0f0a98f3c9bf763e381562817f26af91324cdb.file.departments_list.tpl.php
content_4f1d3c189eaee(Object: Smarty_Internal_Template) # line 180, file: C:\xampp\htdocs\estore\libs\smarty\sysplugins\smarty_internal_templatebase.php
Smarty_Internal_TemplateBase.fetch(null, null, null, null, false, false, true) # line 285, file: C:\xampp\htdocs\estore\libs\smarty\sysplugins\smarty_internal_template.php
Smarty_Internal_Template.getSubTemplate("departments_list.tpl", null, null, null, null, Array[0], "0") # line 57, file: C:\xampp\htdocs\estore\presentation\templates_c\9b13ad36ea5d3846230798cf561962a21e3e63dd.file.store_front.tpl.php
content_4f1d3c1895350(Object: Smarty_Internal_Template) # line 180, file: C:\xampp\htdocs\estore\libs\smarty\sysplugins\smarty_internal_templatebase.php
Smarty_Internal_TemplateBase.fetch("store_front.tpl", null, null, null, true) # line 374, file: C:\xampp\htdocs\estore\libs\smarty\sysplugins\smarty_internal_templatebase.php
Smarty_Internal_TemplateBase.display("store_front.tpl") # line 26, file: C:\xampp\htdocs\estore\index.php
Версия PHP 5.3.8. Smarty 3.1.7(Отредактировано автором: 23 Января, 2012 - 15:19:46)
|