我想用值创建一些YAML键 - php中的代码。但是这个代码不应该被执行 - 我想将它用作值本身。我怎么能这样做?
示例:
somekey: <?php echo 1; ?>
解析后不应将此行识别为somekey: 1
- 我希望somekey
键的值为<?php echo 1; ?>
。
更新的
我想用它来存储数据库中的一些代码(使用fixtures.yml),然后加载它并用作基于php的模板。
答案 0 :(得分:2)
我发明了自己的解决方案。看起来很糟糕但有效:
somekey: "<?php echo '<?php echo 1; ?>'; ?>"
答案 1 :(得分:1)
您可以将其存储为:
somekey: [?php echo 1; ?]
并在需要使用模板之前用适当的php标签替换[?php?](加载yaml的层可以完成工作)。
答案 2 :(得分:1)
我一直在使用灯具进行迁移,还需要使用php来生成正确的yaml文件。我解决这个问题的方法是:
<?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 ?>
所以在symfony 1.2中这很好用,并记住,总是在每个yaml实体之间留下一个空白,就像在示例中一样,并且在处理php嵌入yaml文件时尊重缩进,因为那些空行不会在那里当yaml解析读取它时,所以如果你不把它们放在一起,你可能最终会想到:
auto_generated_label_1:attribute_1:asdasdasd attribute_2:1233123
祝你好运!
答案 3 :(得分:0)
您尚未指定何时(如果有)您希望php代码实际执行。因此,假设您从未希望它执行并且您将值输出到某个地方的浏览器,请尝试<?php echo 1; ?>
(或HTML转义任何实际值)
答案 4 :(得分:0)
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') ?>"