在symfony YAML中使用php代码作为字符串值
问题描述:
我想创建一些带有值的YAML密钥 - php中的代码。但是这个代码不应该被执行 - 我想用它作为值本身。我怎样才能做到这一点?在symfony YAML中使用php代码作为字符串值
例子:
somekey: <?php echo 1; ?>
这行不应该被认定为somekey: 1
解析后 - 我想为somekey
键<?php echo 1; ?>
获得价值。
更新:
我想用它来存储在数据库中的一些代码(与fixtures.yml),然后加载它和基于php的模板使用。
答
我发明了我自己的解决方案。它看起来很糟糕,但工程:
somekey: "<?php echo '<?php echo 1; ?>'; ?>"
答
您还没有指定何时(如果曾经)您想让php代码实际执行。所以假设你永远不希望它来执行,你就值输出到浏览器的地方,尽量<?php echo 1; ?>
(或HTML转义任何实际值)
答
你可以将其存储为:
somekey: [?php echo 1; ?]
并在需要使用模板(加载yaml的层可以完成工作)之前用适当的php标记替换[?php?]。
答
我一直在使用灯具进行迁移的目的,也需要使用PHP来生成适当的yaml文件。我的工作解决此问题做这样的事情:那么symfony1.2版本这是工作很好
<?php $handle=fopen(sfConfig::get('sf_data_dir')."/fixtures/csv/file.csv","r")?>
<?php fgetcsv($handle,0, ";"); ?>
<?php $i=100; ?>
<?php while (($data = fgetcsv($handle,0, ";")) !== false):?>
<?php
$code=trim($data[0]);
$user=trim($data[1]);
$criteria = new Criteria();
$criteria->add(ObjectPeer::CODE, $code);
$unit= objectPeer::doSelectOne($criteria, $error);
if (is_null($unit) || empty($unit))
continue;
?>
auto_generated_label_<?php echo 'value'.$i; $i++?>:
attribute_1: <?php echo $user ?>
attribute_2: <?php echo $unit->getId() ?>
<?php endwhile ?>
,记住,永远留空白像每个YAML实体之间类似的例子中,和尊重缩进用PHP打交道时在YAML文件embebbed,因为这些空行不会在那里当YAML解析读它,所以如果你不把它们,你可以用somethink就像结束了:
auto_generated_label_1:attribute_1:asdasdasd attribute_2:1233123
祝你好运!
答
Symfony的1.0:
version: <?php echo file_get_contents('1.0/VERSION')."\n" ?>
的Symfony 1.x中:
version: "<?php echo file_get_contents('1.1/VERSION') ?>"
远投...... somekey:'?> – Tom 2010-12-20 23:07:26