У меня есть шаблон фалкона вольта. Я хотел вызвать в свой пользовательский помощник, он примет массив, но массив, посланный помощнику, имеет тип строки.Phalcon Volt Array имеет строковый тип
В моей 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)"
вместо типа массива. Это помогло моему помощнику прекратить работать.
Кто-нибудь сталкивается с этим, мне нужно, чтобы он имел тип массива, а не строку?
ОБНОВЛЕНИЕ: После применения предложения @ Николай Михайлов.
Получил ошибку
Fatal error: Class 'MyCustomUrlHelper' not found in cache/volt/%apps%%invo%%views%%test%%list.volt.php on line 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();
...................
........................
В моих Модули/Библиотека каталога, у меня есть этот 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;
}
}
?>
ли я пропустить что-то еще?
Да, верно, но то, что вы указано выше будет принимать только строковые параметры. Мои параметры $ - динамический массив. Это может быть 3 значения или 4 значения только в одном запросе пользовательскому помощнику. Моя проблема заключается в том, как сделать $ parameters для типа массива not string. – user1149244
Просто проверьте его, и вы увидите, что он работает по назначению. Обновление моего ответа с помощью тестового примера. –
Я только что попробовал, и теперь я получил эту ошибку, Неустранимая ошибка: Class 'MyCustomUrlHelper' не найден в cache/volt /% apps %% invo %% views %% test %% list.volt.php в строке 56. Я буду добавьте мой пример кода выше, чтобы было легче читать – user1149244