Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Smarty
Форум программистов > Интернет и сети > Web-программирование > PHP программирование
nws
Взял код гостевой книги из "PHP5 В Подлиннике [Котеров Д. В.] [2006]"

index.html

##Title = Добавить сообщение
##Text
<style>
.error{color:red; font-weight: bold; display: block;}
</style>
<!---FORMA VVODA NOVOI ZAPISI-->
{t_component src="Test_Gbook_Add" name="error" book="test"}
<form method="post">
<table width="80%">
  <tr valign="top">
      <td width="10%">Ваше имя:</td>
      <td><input type="text" name="=new[name]" style="width:100%">
      {if @$error.name}<span class="error">Не указано имя</span>
      {/if}
      </td>
  </tr>
    <tr valign="top">
        <td width="10%">Профессия:</td>
        <td>
        <select name="new[occupation]" style="width:100%">
            <option>Программист</option>
            <option>Web-дизайнер</option>
            <option>Директор</option>
            <option>Другое</option>
        </select>
        {if @$error.occupation}
            <span class="error">Не указанa профессия</span>
            {/if}
        </td>
    </tr>
    <tr valign="top">
        <td>Комментарий:</td>
        <td>
        <textarea name="new[text]" cols="60" rows="5" style="width:100%"></textarea>
        {if @$error.text}
            <span class="error">Слишком короткий текст сообщения</span>
            {/if}
        </td>
    </tr>
    <tr valign="top">
        <td>&nbsp;</td>
        <td align="center">
        <input style="width=:100%" type="submit" name="doAdd" value="Добавить">
        {if $error}
                        <span class="error">Ощибка! Сооющение ие добавлено!</span>
        {/if}
        </td>
    </tr>
</table>
</form>
{/t_component}
<!---/FORMA VVODA NOVOI ZAPISI-->
<!---VIVOD ZAPISEY GOSTEVUHI-->
{t_component src="Test_Gbook_Show" name="book" book="test"}
    {foreach from "$book" key="id" item="e"}
        <table width="100%" bgcolor="{cycle values="#DDDDDD,#CCCCCC"}">
            <tr>
                <td colspan="2">
                    {$e.stamp|date_format:"%Y-%m-%d %H:%M"}
                    <a href="mailto:{$e.email|htmlspecialchars}">{$e.name|htmlspecialchars}</a>
                </td>
            </tr>
            <tr>
                <td width="1%">&nbsp;&nbsp;&nbsp;</td>
                <td>{$e.text|htmlspecialchars}</td>
            </tr>
        </table>
    {/foreach}
{/t_component}
<!---/VIVOD ZAPISEY GOSTEVUHI-->


add.php

<?php

require_once "Test/Gbook/Model.php";

class Test_Gbook_Add extends Subsys_Templier_Component
{
    var $NEW_ELEMENT = "new";

    function main($params, &$templier)
    {
        $name = isset($params['book']) ? $params['book']:null;
        if (!$name)
        {
            $this->croak("parameter 'book' is not specifed");
            return false;
        }
        

        if (!empty($_REQUEST['doAdd']))
        {
            $new = $_REQUEST[$this->NEW_ELEMENT];
            $new['stamp'] = time();

            $errors = $this->validate($new);
            if ($errors)
                return $errors;

            $Book = Test_Gbook_Model::load($name);
            $Book = array(time() => $new) + $Book;
            Test_Gbook_Model::save($name, $book);

            unset($new['text']);
            unset($new['stamp']);
            setcookie("gbook", serialize($new), time() + 3600 * 24 * 365, "/");
            header("Location:" . "http://{$_SERVER['HTTP_HOST']}{$_SERVER['SCRIPT_NAME']}" .
                "?" . TIME());
            exit();
        }
        else
        {
            $data = @unserialize($_COOKIE['gbook']);
            $_POST[$this->NEW_ELEMENT] = $data;
        }
        return array();
    }

    function validate(&$new)
    {
        $errors = array();

        if (!trim($new['name']))
        {
            $errors['name'] = true;
        }
        if (!trim($new['email']))
        {
            $errors['email'] = true;
        }
        if (!trim($new['occupation']))
        {
            $errors['occupation'] = true;
        }
        if (!trim($new['text']))
        {
            $errors['text'] = true;
        }
        return $errors;
    }
}
?>


model.php

<?php

class Test_Gbook_Model
{
    function load($name)
    {
        $fname = "data/$name.dat";
        @mkdir(dirname($fname));
        if (!file_exists($fname))
            return array();
        $Book = unserialize(file_get_contents($fname));
        return $Book;
    }
    
    function save($name,$Book){
        $fname = "data/$name.dat";
        $f = fopen($fname,"w");
        fwrite($f,serialize($Book));
        fclose($f);
    }
}

?>


show.php

<?php

require_once "Test/Gbook/Model.php";

class Test_Gbook_Show extends Subsys_Templier_Component
{

    function main($params, &$templier)
    {
        $name = isset($params['book']) ? $params['book']:null;
        if (!$name)
        {
            $this->croak("parameter 'book' is not specifed");
            return false;
        }
        $Book = Test_Gbook_Model::load($name);
        return $Book;

    }
}
?>


Но я не вижу где они подключают Smarty, а в браузере у меня не читается код, а просто выводится как простые слова. Что делать ? smile.gif
j_man
тут видимо не хвататет како-го-нибудь обработчика запросов, где все это и подключается.
А вообще - ]]>http://www.smarty.net/manual/ru/]]> тут все понятно и на русском там и читай. весь смарти за пару часовмона освоить и протестить большинство функционала по этому мануалу.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.