как создать файл шаблона php

контроллер

$data["controller"] = $table;
$data["rows"] = $this->base_model->get();//get table attributes and names
$write_add = $this->load->view("generate/add",$data,TRUE);//load file into var
$file_vadd = fopen($path["dirname"].'/generate/views/'.$data["controller"].'/add.php',"w+"); //write to file

сгенерировать/добавить.php (шаблон)

<?php echo "<?php " ?>echo form_open('<?=$controller?>/add'); ?>
        <fieldset>
        <legend>New <?=$controller?></legend>
        <?php foreach($fields as $field): ?>
            <label for="<?php echo $field->name?>" ><?php echo $field->name?></label>
            <?php if(!empty($rel)) : ?>
                    <?php if($rel["rel_type"]==1 && $field->name == $rel["rel_fk"] ):?>
                        <select name="<?php echo $field->name?>" id="<?php echo $field->name?>">

                            <?php echo "<?php " ?> foreach($<?=$rel["rel_table"]?>_option as $<?=$rel["rel_table"]?>): ?>
                                <option value="<?php echo "<?php " ?>echo $<?=$rel["rel_table"]?>-><?=$rel["rel_pk"]?>; ?>" ><?php echo "<?php " ?>echo $<?=$rel["rel_table"]?>-><?=$rel["rel_view"]?> ;?></option>

                            <?php echo "<?php " ?> endforeach; ?>
                        </select>

                    <?php else: ?>
                        <input type="text"  name="<?php echo $field->name?>" id="<?php echo $field->name?>"  />
                <?php endif; ?>  
            <?php endif; ?>
        <?php endforeach;?>
        <input name="submit" type="submit"  value="Add"/> 
       </fieldset>   
    </form>

у меня есть контроллер, который будет вызывать этот шаблон для создания представлений, контроллеров и моделей. я не знаю лучшего способа сделать это, и мне не нравится помещать тег php внутри тега php. предложение?

Это похоже на функцию «выпекать» в cakephp. Но я создаю кодовую версию Bake. скрипт работает. Но мой код грязный.? ищете лучший способ управлять файлом шаблона..


person li9ht    schedule 13.12.2011    source источник
comment
Хороший вопрос. Вы можете посмотреть, как Smarty это делает, и я тоже хотел бы это знать :)   -  person Ignas    schedule 13.12.2011
comment
Пожалуйста, проверьте этот пост: [stackoverflow.com/questions/8486807/ [1]: stackoverflow.com/questions/8486807/   -  person SMSM    schedule 12.12.2012
comment
[stackoverflow.com/questions/8486807/ [1]: stackoverflow.com/questions/8486807/   -  person SMSM    schedule 12.12.2012


Ответы (1)


Простой способ сделать это — включить буферизацию вывода, включая файл php (что позволяет ему делать свое дело), ​​завершить буферизацию вывода и сохранить результат в файл. Что-то в духе

ob_start();
include("foobar.php");
$temp .= ob_get_clean();
file_put_contents('foo.tpl', $temp);
person Jan Dragsbaek    schedule 13.12.2011
comment
ну .. мне уже удалось запустить скрипт раньше .. просто я ищу лучший способ написать мой код выше .. вместо того, чтобы повторять мой php-тег внутри php-тега - person li9ht; 13.12.2011
comment
Это было действительно трудно прочитать из вашего вопроса, и я предлагаю вам переписать и переосмыслить свой первоначальный вопрос. - person Jan Dragsbaek; 13.12.2011
comment
извините ... английский не мой первый язык ... просто я могу плохо объяснять вещи ... может быть, это будет понятнее на примере ... я создаю функцию выпечки, такую ​​​​как cakephp для codeigniter .. код, который я публикую, файл шаблона .im ищет лучший способ написать файл шаблона - person li9ht; 13.12.2011