2017-12-23 5 views
0

Ich muss eine Datei in CI erstellen usgin eine Vorlage; die Datei erstellt sollte beginnt mit < \ php-String so dass ich eine Vorlage wie die folgenden erstellt:Datei schreiben mit <? Php string in Codeigniter

<?php defined('BASEPATH') OR exit('No direct script access allowed'); 
class Migration_<?php echo $class_name; ?> extends CI_Migration { 

    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function up() { 
     $this->myforge->add_field(array(
      'id' => array(
       'type' => 'INT', 
       'constraint' => 11, 
       'auto_increment' => TRUE 
      ) 
     )); 
     $this->myforge->add_key('id', TRUE); 
     $this->myforge->create_table('<?php echo $table_name; ?>'); 
    } 

    public function down() { 
     $this->myforge->drop_table('<?php echo $table_name; ?>'); 
    } 

} 

Die $ class_name und korrekt durch den Codeigniter Controller analysiert $ table_name Variablen, aber ich bin nicht in der Lage zu schreiben richtig die erste Reihe.

Die Code-Controller die Datei zu erstellen ist:

$my_migration = fopen($path, "w") or die("Unable to create migration file!"); 
$templatedata['table_name'] = $table_name; 
$templatedata['class_name'] = $class_name; 
$migration_template = $this->load->view('adm/migration/templates/create_table_template.tpl.php',$templatedata,TRUE); 
fwrite($my_migration, $migration_template); 
fclose($my_migration); 

Vielen Dank für jede Hilfe

Antwort

1

Ändern der Ansicht Vorlagendatei in den folgenden sollte das Problem lösen.

<?php 
echo 
"<?php defined('BASEPATH') OR exit('No direct script access allowed'); 
class Migration_$class_name extends CI_Migration { 

    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function up() { 
     \$this->myforge->add_field(array(
      'id' => array(
       'type' => 'INT', 
       'constraint' => 11, 
       'auto_increment' => TRUE 
      ) 
     )); 
     \$this->myforge->add_key('id', TRUE); 
     \$this->myforge->create_table('$table_name'); 
    } 

    public function down() { 
     \$this->myforge->drop_table('$table_name'); 
    } 

} 
"; 

Ich habe den ganzen Inhalt in einen String umgewandelt, entfernt die echo Aussagen im Inhalt, da die Variablen von PHP erweitert werden, und flüchtete schließlich $this mit einem \ seit $this muss nicht erweitert werden.

+0

@Federico, wenn gearbeitet, sollten Sie die Antwort akzeptieren – user4419336

Verwandte Themen