1

コントローラ

$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

generate/add.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」機能のようなものです。しかし、bake の codeigniter バージョンを作成しています。スクリプトが実行されています。しかし、私のコードは面倒です。テンプレートファイルを管理するより良い方法を探しています..

4

1 に答える 1

0

これを行う簡単な方法は、phpファイルを含む出力バッファリングを有効にし(これにより、その処理が可能になります)、出力バッファリングを終了し、結果をファイルに保存します。の線に沿った何か

ob_start();
include("foobar.php");
$temp .= ob_get_clean();
file_put_contents('foo.tpl', $temp);
于 2011-12-13T09:26:14.973 に答える