Использование php-кода в symfony YAML в качестве строкового значения - PullRequest
1 голос
/ 20 декабря 2010

Я хочу создать какой-нибудь ключ YAML со значением - код в php.Но этот код не должен выполняться - я хочу использовать его как само значение.Как я могу это сделать?

Пример:

somekey: <?php echo 1; ?>

Эта строка не должна распознаваться как somekey: 1 после анализа - я хочу получить значение для клавиши somekey как <?php echo 1; ?>.

Обновление:

Я хочу использовать это для хранения некоторого кода в базе данных (с fixtures.yml), а затем загрузить его и использовать в качестве шаблона на основе php.

Ответы [ 5 ]

2 голосов
/ 21 декабря 2010

Я придумал собственное решение.Это выглядит плохо, но работает:

somekey: "<?php echo '<?php echo 1; ?>'; ?>" 
1 голос
/ 20 декабря 2010

Вы можете сохранить его как:

somekey: [?php echo 1; ?]

и заменить [? Php?] Соответствующими тегами php непосредственно перед тем, как вам понадобится использовать шаблон (слой, который загружает yaml, может выполнить работу).

1 голос
/ 20 декабря 2010

Я использовал приспособления для целей миграции, а также мне нужно было использовать 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

Удачи!

0 голосов
/ 19 февраля 2013

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') ?>"
0 голосов
/ 20 декабря 2010

Вы не указали, когда (если когда-либо) вы хотите, чтобы код php действительно выполнялся. Предполагая, что вы никогда не хотите, чтобы оно выполнялось, и вы выводите значение в браузер, попробуйте &lt;?php echo 1; ?&gt; (или HTML, экранирующий любое действительное значение)

...