передача массива в modifier-plugin

Drew

Guest
передача массива в modifier-plugin

Где собака порылась???

Видно, что при передаче в плагин в качестве параметра массива передается не массив 4 значений целиком, а 4 раза вызывается плагин и передается каждое значение массива.

Я хочу:
PHP:
myarr($arr);
А получается:
PHP:
for ($i=0; $i<sizeof($arr), $i++) {
    myarr(arr[$i]);
}
arr.php
======
PHP:
$arr = array('1', array('2-1', '2-2'), '3', '4');

echo "Pure PHP:\n";
print_r($arr);

$smarty->assign('arr', $arr);
$smarty->display('arr.tpl');
arr.tpl
=====
PHP:
PHP+Smarty:
{$arr|myarr}
plugins/modifier.myarr.php
====================
PHP:
function smarty_modifier_myarr($array) {

    echo "arr[0]=".$array[0];
    echo "\n";
}
output:
======
Код:
Pure PHP:
Array
(
    [0] => 1
    [1] => Array
        (
            [0] => 2-1
            [1] => 2-2
        )

    [2] => 3
    [3] => 4
)


PHP+Smarty:
arr[0]=1
arr[0]=2-1
arr[0]=3
arr[0]=4
 

Drew

Guest
Автор оригинала: Frol
http://smarty.php.net/manual/en/language.modifiers.php
внимательно изучаем
Огромной спасибо. Вот как знал ведь, что собака порылась. И не зря мне сегодня собака снилась - намекала, что дело в ней :)

If you apply a modifier to an array variable instead of a single value variable, the modifier will be applied to every value in that array. If you really want the modifier to work on an entire array as a value, you must prepend the modifier name with an @ symbol like so: {$articleTitle|@count} (this will print out the number of elements in the $articleTitle array.)
 
Сверху