У меня есть шаблон Phalcon volt, который я хотел вызвать в своем пользовательском помощнике, он примет массив, но массив, отправленный помощнику, имеет строковый тип.
В моем list.volt у меня есть этот код,
{% set myfolder = data.foldername %}
{% set key = data.folderkey %}
{% set url = convert([myfolder, key]) %}
В мой loader.php я объявил вспомогательный каталог и получил следующий код:
//$params should be single dimensional array
$compiler->addFunction('convert', function($params){
var_dump($params);
return MyCustomHelper::convert($params);
});
Будет выводить string(31) "array($fname, $fkey)"
вместо типа массива. Это заставило моего помощника перестать работать.
Кто-нибудь сталкивался с этим, мне нужно, чтобы он был типа массива, а не строки?
ОБНОВЛЕНИЕ: после применения предложения @Nikolay Mihaylov.
Получил ошибку
Неустранимая ошибка: класс MyCustomUrlHelper не найден в cache/volt/%apps%%invo%%views%%test%%list.volt.php в строке 56.
В моем services.php я включил свой вспомогательный каталог
use Modules\Library\MyCustomUrlHelper;
/*
......
Some code here
..............................
....................
*/
$compiler->addFunction('convert', function($resolvedArgs, $exprArgs){
return 'MyCustomUrlHelper::convert('.$resolvedArgs.')';
});
В loader.php я зарегистрировал каталог
........
.....................
$loader->registerDirs(array(APP_PATH.'Modules/Library'))->register();
...................
........................
В моем каталоге Modules/Library у меня есть этот файл MyCustomUrlHelper.php.
<?php
namespace Modules\Library;
use Phalcon\Tag;
class MyCustomUrlHelper extends Tag
{
public function convert($params)
{
if(!is_array($params))
{
$params = array($params);
}
/*
..... some code here ...
.................
..........
*/
return $converted;
}
}
?>
Я пропустил что-то еще?