записать входное значение в шаблон HTML - PullRequest
0 голосов
/ 21 декабря 2011

У меня вопрос по поводу шаблона HTML. Я создал функцию шаблона, которая заменяет маркеры в шаблоне HTML содержимым из базы данных.

   /***********************************************************
    * TemplateGenerator will match markers in a defined html
    * template and replace them with corresponding data
    * i.e. ###MARKER_1### in html template will be replaced
    * with data in the ###MARKER_1### array key defined 
    * in GetMarkers function.
    *
    * @param string  | The html template
    *                  The template can contain all the html the  
    *                  layout needs - matched markers will be replaced.
    ************************************************************/   
    public static function TemplateGenerator($template) {

        /* Get content from the html template */    
        $data = file_get_contents($template);

        if(isset(self::$newmarkers)) {

            /**************************************************
            * Match each key in $this->markers array 
            * and replace with the correct value
            ***************************************************/ 
            foreach(self::$newmarkers as $key => $value) {
                    if(preg_match("/". preg_quote($key) ."/", $data, $matches)) {
                        $data = str_replace($key, $value, $data);
                } else { 
                    $data = $data;
                }
            }

            return $data;

        } else { 
            if(!empty($data)) { 
                echo $data;
            } else { 
                die("Der er sket en fejl med genereringen af siden");
            }
        }
    }

Я использую эту функцию в phpприложение для рассылки новостей ... Это работает почти идеально, но когда я создал приложение, я не учел возможность редактирования письма (почему, я не знаю).

У меня есть шаблон HTML (standard.html) с полями ввода для создания новостной рассылки.

<h1 style="background-image: url(gfx/icons/new.png); background-position: left; background-repeat: no-repeat;">Opret nyhedsbrev - ###THETMP###</h1>

<form action="index.php?page=create" method="post" enctype="multipart/form-data">
    <label for="letter_headline">Overskrift:</label> <input type="text" name="letter_headline" id="letter_headline" value="" /><br />
    <label>Modtagere: </label> <select name="recievers[]" multiple="multiple" size="5">###RECS###</select><br />
    <label>Billede</label> <input type="file" name="letter_image[0]" id="letter_image" value="" /><br />
    <label for="letter_content">Indhold</label> <textarea name="letter_content" id="letter_content" cols="50" rows="15"></textarea><br />
    <label for="letter_link">Link</label> <input type="text" name="letter_link" id="letter_link" value=""  /><br />
    <label for="letter_link_txt">Linktekst</label> <input type="text" name="letter_link_txt" id="letter_link_txt" value="" /><br />
    <input type="hidden" name="template_to_use" value="standard.html" />
    <input type="submit" value="Opret nyhedsbrev" name="create" />
</form>

Когда я выбираю, что хочу создать стандартную новостную рассылку, функция TemplateGenerator выведет этот шаблон с т. е. списком получателей в маркере ###RECS ###.

У меня есть таблица с именем newsletter_fields, в которой есть следующие столбцы:

field_uid |поле_имя |field_content

где field_name будет содержать имя поля ввода, т. е. letter_headline, а field_content будет иметь содержимое, которое было записано в поле ввода при создании письма, т.е. «Это заголовок».

У меня вопрос, могу ли я использовать тот же HTML-файл в функции editletter, который заменит только value="" в полях ввода, например, value="This is a headline" во вводе letter_headline.

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

Вы принимаете это не с той стороны.

Если ваши значения ВСЕГДА заполнены маркерами, вы можете использовать один и тот же шаблон как для добавления, так и для редактирования, заполняя маркеры пустыми строками для последнего случая.

Однако вся идеятакой шаблон неправильный.
Механизм шаблонов должен иметь возможность реализовывать базовую логику программирования, такую ​​как циклы, условия и включения.
В противном случае из шаблона вообще ничего не выйдет, и вы получите HTMLв вашем коде (как у вас уже есть маркер ### RECS ###).

Шаблон на основе PHP будет намного удобнее, и я бы посоветовал использовать его вместо этого

0 голосов
/ 21 декабря 2011

Просто поместите еще несколько маркеров в поля value="" (как, например, value="###ANOTHERMARKER##") и замените их.

Если вы хотите заменить разные маркеры для разных целей, просто замените ихчто вы не хотите иметь значение с пустой строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...