[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Данные из контроллера не доходят до представления
Nikage
Класс вывода вывода полного текста статьи (по модели mvc, контроллер)
class C_ViewArticle extends Page_C
{
private $article_title;
private $article_content;
protected $content;

// Конструктор
function __construct(){

}


// Виртуальный обработчик запросв
protected function OnInput(){

parent::OnInput();
$this->title = 'Просмотр статьи';

$article = articles_get ($_GET['id']);

if (!$article){

echo " Error...";
}

$this->article_title = $article['title'];

$this->article_content = $article['text'];


}

protected function OnOutput(){

$vars = array( 'title' => $this->article_title, 'content' => $this->article_content);
$this->content = $this->template('templates/default/article_view.php', $vars);


parent::OnOutput();
}
}



выводит пустой внешний шаблон...
уже всю голову сломал... :blink:

[MOD]
Цитата
Давайте вменяемые названия вашим темам.
За названия тем: Помагите 3 сутки не сплю!! и им подобные буду раздавать баны, а сами темы закрывать.
Invis1ble[/EX]



Спустя 3 минуты (19.09.2011 - 00:01) Winston написал(а):
Nikage
По курсам "Профессионал" учишься ? :)
Цитата (Nikage @ 18.09.2011 - 23:58)
  parent::OnOutput();

Попробуй написать
return parent::OnOutput();

Спустя 2 минуты, 56 секунд (19.09.2011 - 00:04) vital написал(а):
А вы уверены, что в онинпут у вас данные точно есть?
ЧТо находится в parent::
тоже не плохо бы показать.

Спустя 1 минута, 39 секунд (19.09.2011 - 00:05) Nikage написал(а):
Цитата (Winston @ 18.09.2011 - 21:01)
Nikage
По курсам "Профессионал" учишься ? smile.gif

ПО ним самым...

Совет к сожалению не помог...

Спустя 3 минуты, 15 секунд (19.09.2011 - 00:09) Winston написал(а):
В методе Request главного контроллера тоже напиши
return OnOutput();

Спустя 1 минута, 19 секунд (19.09.2011 - 00:10) Nikage написал(а):
Цитата (vital @ 18.09.2011 - 21:04)
А вы уверены, что в онинпут у вас данные точно есть?
ЧТо находится в parent::
тоже не плохо бы показать.



В OnInput они точно есть, проверял методом
echo $this->article_content;

а до представления они не доходят...

parent::
protected function OnOutput (){

$vars = array ('title' => $this->title,
'content' => $this->content);

$page = $this->template ('templates/default/main.php', $vars);

echo $page;
}

Спустя 1 минута, 17 секунд (19.09.2011 - 00:11) Winston написал(а):
Покажи еще класс Page_C

Спустя 26 секунд (19.09.2011 - 00:12) Invis1ble написал(а):

 ! 

М
Так. До автора предупреждение с просьбой смены названия темы не дошло.
Прийдется закрыть темку.

В связи с обещанием ТС исправиться, тема снова открыта.
Жду смены названия.
Invis1ble

Спустя 10 минут, 46 секунд (19.09.2011 - 00:22) vital написал(а):
protected function OnOutput (){

$vars = array ('title' => $this->title,
'content' => $this->content);

$page = $this->template ('templates/default/main.php', $vars);

echo $page;
}
protected function OnOutput(){

$vars = array( 'title' => $this->article_title, 'content' => $this->article_content);
$this->content = $this->template('templates/default/article_view.php', $vars);


parent::OnOutput();
}


 ! 

М
Пользуйтесь bb тегами !
Winston

А зачем вам вообще здесь парент?
Сделайте просто echo $page; вместо parent::OnOutput();
Он же вам тупо затирает ваши переменные.

Спустя 4 минуты, 46 секунд (19.09.2011 - 00:27) Nikage написал(а):
Цитата (vital @ 18.09.2011 - 21:22)
protected function OnOutput (){

$vars = array ('title' => $this->title,
'content' => $this->content);

$page = $this->template ('templates/default/main.php', $vars);

echo $page;
}
protected function OnOutput(){

$vars = array( 'title' => $this->article_title, 'content' => $this->article_content);
$this->content = $this->template('templates/default/article_view.php', $vars);


parent::OnOutput();
}

А зачем вам вообще здесь парент?
Сделайте просто echo $page; вместо parent::OnOutput();
Он же вам тупо затирает ваши переменные.

НУ во-первых в примере так было...
Во вторых, ИМХО данные преобразовываются в строку и передаются базовому контроллеру, собственно parent

Спустя 1 минута, 19 секунд (19.09.2011 - 00:29) Nikage написал(а):
Цитата (Invis1ble @ 18.09.2011 - 21:12)
[MOD]Так. До автора предупреждение с просьбой смены названия темы не дошло.
Прийдется закрыть темку.

В связи с обещанием ТС исправиться, тема снова открыта.
Жду смены названия.Invis1ble[/EX]

так лучше?

Спустя 11 секунд (19.09.2011 - 00:29) YVSIK написал(а):
Nikage открой первый пост кнопкой редактировать и поменяй название ))
попробуй это совсем просто и совсем не дольно ))

Спустя 1 минута, 56 секунд (19.09.2011 - 00:31) vital написал(а):
Цитата (Nikage @ 18.09.2011 - 23:27)
Цитата (vital @ 18.09.2011 - 21:22)
protected function OnOutput (){
       
        $vars = array ('title' => $this->title,
                      'content' => $this->content);
                     
        $page = $this->template ('templates/default/main.php', $vars);
       
        echo $page;       
    }
        protected function OnOutput(){
       
        $vars = array( 'title' => $this->article_title, 'content' => $this->article_content);
        $this->content = $this->template('templates/default/article_view.php', $vars);
       
       
        parent::OnOutput();
    }

А зачем вам вообще здесь парент?
Сделайте просто echo $page; вместо  parent::OnOutput();
Он же вам тупо затирает ваши переменные.

НУ во-первых в примере так было...
Во вторых, ИМХО данные преобразовываются в строку и передаются базовому контроллеру, собственно parent

Неа. Вы вызываете метод парента, который как бы сказать.. тупо затирает ваши переменные.
Вы бы не спорили, а попробовали.

Спустя 40 секунд (19.09.2011 - 00:31) Winston написал(а):
Nikage
Посмотри мой метод Request в файле Controller и метод Output калсса С_Index...

Спустя 3 минуты, 32 секунды (19.09.2011 - 00:35) Nikage написал(а):
Ссори ребята, я уже ничего не соображаю...
Затра на работу рано, так что до завтра!

Спустя 22 часа, 15 минут, 33 секунды (19.09.2011 - 22:50) Nikage написал(а):
Цитата (vital @ 18.09.2011 - 21:31)
Цитата (Nikage @ 18.09.2011 - 23:27)
Цитата (vital @ 18.09.2011 - 21:22)
<pre class=\"sh_sourceCode\" rel=\"php\"><span class=\"sh_keyword\">protected function</span> <span class=\"sh_function\">OnOutput</span> <span class=\"sh_symbol\">()</span><span class=\"sh_cbracket\">{</span>
       
        <span class=\"sh_variable\">$vars</span> <span class=\"sh_symbol\">=</span> <span class=\"sh_function\">array</span> <span class=\"sh_symbol\">(</span><span class=\"sh_string\">'title'</span> <span class=\"sh_symbol\">=></span> <span class=\"sh_variable\">$this</span><span class=\"sh_symbol\">-></span>title<span class=\"sh_symbol\">,</span>
                       <span class=\"sh_string\">'content'</span> <span class=\"sh_symbol\">=></span> <span class=\"sh_variable\">$this</span><span class=\"sh_symbol\">-></span>content<span class=\"sh_symbol\">);</span>
                      
        <span class=\"sh_variable\">$page</span> <span class=\"sh_symbol\">=</span> <span class=\"sh_variable\">$this</span><span class=\"sh_symbol\">-></span><span class=\"sh_function\">template</span> <span class=\"sh_symbol\">(</span><span class=\"sh_string\">'templates/default/main.php'</span><span class=\"sh_symbol\">,</span> <span class=\"sh_variable\">$vars</span><span class=\"sh_symbol\">);</span>
       
        <span class=\"sh_function\">echo</span> <span class=\"sh_variable\">$page</span><span class=\"sh_symbol\">;</span>       
    <span class=\"sh_cbracket\">}</span>
        <span class=\"sh_keyword\">protected function</span> <span class=\"sh_function\">OnOutput</span><span class=\"sh_symbol\">()</span><span class=\"sh_cbracket\">{</span>
       
        <span class=\"sh_variable\">$vars</span> <span class=\"sh_symbol\">=</span> <span class=\"sh_function\">array</span><span class=\"sh_symbol\">(</span> <span class=\"sh_string\">'title'</span> <span class=\"sh_symbol\">=></span> <span class=\"sh_variable\">$this</span><span class=\"sh_symbol\">-></span>article_title<span class=\"sh_symbol\">,</span> <span class=\"sh_string\">'content'</span> <span class=\"sh_symbol\">=></span> <span class=\"sh_variable\">$this</span><span class=\"sh_symbol\">-></span>article_content<span class=\"sh_symbol\">);</span>
        <span class=\"sh_variable\">$this</span><span class=\"sh_symbol\">-></span>content <span class=\"sh_symbol\">=</span> <span class=\"sh_variable\">$this</span><span class=\"sh_symbol\">-></span><span class=\"sh_function\">template</span><span class=\"sh_symbol\">(</span><span class=\"sh_string\">'templates/default/article_view.php'</span><span class=\"sh_symbol\">,</span> <span class=\"sh_variable\">$vars</span><span class=\"sh_symbol\">);</span>
       
       
        <span class=\"sh_keyword\">parent</span><span class=\"sh_symbol\">::</span><span class=\"sh_function\">OnOutput</span><span class=\"sh_symbol\">();</span>
    <span class=\"sh_cbracket\">}</span> </pre>
А зачем вам вообще здесь парент?
Сделайте просто echo $page; вместо  parent::OnOutput();
Он же вам тупо затирает ваши переменные.

НУ во-первых в примере так было...
Во вторых, ИМХО данные преобразовываются в строку и передаются базовому контроллеру, собственно parent

Неа. Вы вызываете метод парента, который как бы сказать.. тупо затирает ваши переменные.
Вы бы не спорили, а попробовали.

Ничего из этого не получается...
Странца генерируется базовым контроллером.

Спустя 5 минут, 57 секунд (19.09.2011 - 22:56) Nikage написал(а):
Вот к примеру контроллер главной страницы, и все отлично работает:
<?php

include_once( 'engine/controllers/page_c.php');



class C_ArticleList extends Page_c
{
private $articles; // Массив со статьями

// Конструктор

function __construct (){
// Например можно указать активную кноку меню навигации
}
protected function OnInput() {

parent::OnInput();
$this->title = 'Список добавленных статей';
$this->articles = articles_all();

}

// Подключение внутреннего шаблона

protected function OnOutput (){

$vars = array ('articles' => $this->articles, 'title' => $this->title);
$this->content = $this->template ('templates/default/article_list.php', $vars);
parent::OnOutput();
}
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.