Установить значение для параметра в app.yml в Symfony - PullRequest
0 голосов
/ 27 сентября 2011

Я использую Symfony Propel.Я хочу изменить значение моей переменной app.yml внутри цикла for.

Мой код:

for($i=0;$i<5;$i++)
{
$previousValue = sfConfig::get('app_url');
sfConfig::set('app_url', $previousValue+1);
echo sfConfig::get('app_url');
}

Я установил значение по умолчанию для url = 0

Когда я запускаюэто я получаю значение как 1, но это должно быть 4. Когда я снова запускаю страницу, то она должна закончиться 8, запустить снова 16, и так далее.Что я делаю не так? Пожалуйста, помогите мне.

Ответы [ 2 ]

3 голосов
/ 27 сентября 2011

Когда вы используете sfConfig :: set (), вы устанавливаете это значение только для текущего времени выполнения.Вы не редактируете постоянно app.yml.

Хотя технически было бы возможно редактировать YAML-файлы с помощью PHP, я бы не советовал этого делать, так как это слишком сложно по сравнению с другими альтернативами, а Symfony кэширует проанализированные YAML-файлы.в любом случае.

Вам лучше хранить такие значения в вашей базе данных.Простого запроса будет достаточно для увеличения вашего значения.

Также проверьте мой ответ в связанном вопросе: отредактируйте значения в app.yml с помощью backend

0 голосов
/ 27 сентября 2011

sfConfig 1 не является хорошим способом хранения постоянных данных, используйте sfStorage 2 , в противном случае каждый раз, когда вы запрашиваетеНа странице ваше значение сбрасывается до вашего исходного значения.

Ваш пример:

app.yml

  all:
   url: 0

indexSuccess.php

  for($i=0;$i<5;$i++) {
    $previousValue = sfConfig::get('app_url');
    sfConfig::set('app_url', $previousValue+1);
    echo sfConfig::get('app_url');
  }

Выход:

12345

Но каждый раз, когда вашперезапустите его, у вас будет тот же вывод.

Ps: Когда вы объявляете или инициализируете значение конфигурации, не забудьте очистить кэш (php symfony cc)

...