|
|
|
| index.tpl
<html>
<?php
$this->show('head');
?>
<body>
<div class="layer">
<?php
$this->show('ibody')->show('footer');
?>
</div>
</body>
</html>
|
ibody.tpl
<?php
$userModel = Mapper_User::getCurrentUser();
$this->printMessage();
if($userModel->getUserData() == false){
$this->show('form_auth');
} else {
$this->show('wall');
}
?>
|
wall.tpl
<?php
$this->show('form_search');
$userModels = Mapper_User::getUserList();
for($j=0; $j<count($userModels)/5; $j++){
for($i=0; $i<5; $i++){
$model = $userModels[$j];
global $model;
$this->show('block_user');
}
}
?>
|
user.tpl
<div class="wallUser">
<?php var_dump($model);?>
<a href="profile/?id=<?php echo $model->getId();?>"><img src="<?php echo $model->getImage();?>"/></a>
<?php echo $model->getName();?>
</div>
|
Функция показа шаблона во вьюшке.
public function show($template){
$prefix = 'source';
$filename = self::tpl_exists($template, $prefix);
require $filename;
return $this;
}
|
Собственно, в user.tpl совсем не видно переменную $model - она вардампится как NULL. Почему так? | |
|
|
|
|
|
|
|
для: alexander95
(19.09.2012 в 19:30)
| | 1. global $model; -означает что эта переменная является глобальной в этом конкретном месте (функции), а не во всем коде. То что 1 раз написано global $model; не означает что теперь эта переменная будет видна везде и всегда.
2. У вас файлы подключаются как часть тела функции, значит в каждом из них свое локальное пространство имен.
3. напишите в user.tpl:
<?php global $model; var_dump($model);?>
|
| |
|
|
|
|
|
|
|
для: Sfinks
(19.09.2012 в 19:54)
| | Часть тела функции! Вот в чем ошибка. Понял. Я как раз читал про пространства имен, но, почему-то, подумал, что она будет одинаковая. Огромное спасибо. Что-то я сегодня усталый, простых вещей не замечаю :) | |
|
|
|