[Решено] Ошибка Computed Field (cannot redeclare ... previously declared)

Главные вкладки

Аватар пользователя molp molp 31 августа 2015 в 7:36

Использую модуль Computed Field для конвертации цены.
Для вычисляемого поля написал код:

<?php
$nd 
node_load(33);
$nf round($nd->field_rate['und'][0]['value'] * $entity->field_price_ye['und'][0]['value'], 2);
$new_nf stan($nf3);
function 
stan($value$offset) {
    
$v = (string)$value;
    
$l strlen($v);
    
$ret = array();
    for(
$i=$l$i>=0$i--) {
        if( (
$i $offset) == $ret[] = " ";
        
$ret[] = $v[$l-$i];
    }
    return 
trim(implode(null$ret));
}
$entity_field[0]['value'] = $new_nf." руб.";
?>

В результате на страницах собранных на Views получаю ошибку:

«Fatal error: Cannot redeclare stan() (previously declared in C:\OpenServer\domains\test.my\sites\all\modules\computed_field\computed_field.module(394) : eval()'d code:4) in C:\OpenServer\domains\test.my\sites\all\modules\computed_field\computed_field.module(394) : eval()'d code on line 13»

Если упростить код, убрав из него функцию на которую ругается ошибка, то и ошибка исчезает.
Прошу подсказать как решить задачу?

Комментарии

Аватар пользователя molp molp 31 августа 2015 в 9:20

Так работает:

<?php
$nd 
node_load(33);
$nf round($nd->field_rate['und'][0]['value'] * $entity->field_price_ye['und'][0]['value'], 2);
$v = (string)$nf;
$l strlen($v);
$ret = array();
for(
$i=$l$i>=0$i--) {
    if( (
$i 3) == $ret[] = " ";
    
$ret[] = $v[$l-$i];
}
$nv trim(implode(null$ret));
$entity_field[0]['value'] = $nv." руб.";
?>