Нашёл хороший пример по созданию виджета в phalcon
docs.phalconphp.ru/ru/1.2.0/reference/forms.html
прочёл статью:
https://docs.phalconphp.com/en/3.0.0/reference/vol...
В общем не могу понять почему после вывода виджета прекращается работа
{{ widget('Form',['2','4','5']) }} и не отображается ни обной ошибки
// файл лежит в public/index.php
// Register Volt as a service
$di->set(
"voltService",
function ($view, $di) use ($config){
$volt = new Volt($view, $di);
$volt->setOptions(
[
"compiledSeparator" => "_",
"compiledPath" => "../cache/",
"compiledExtension" => ".compiled",
]
);
$compiler = $volt->getCompiler();
// $compiler->addFunction( //пробовал самотстоятельно функции добавлять смотрел как работает
// "widget", function ($resolvedArgs, $exprArgs) {
//// return "Library\\Widgets::widget(" . $resolvedArgs . ")";
// }
// );
//уверен ошибка где-то здесь:
$compiler->addFunction('widget', function($resolvedArgs, $exprArgs) use($compiler) {
$class = trim($compiler->expression($exprArgs[0]['expr']), "'");
$params = empty($exprArgs[1]['expr']) ? null : $compiler->expression($exprArgs[1]['expr']);
$result = "\\Widgets\\$class::widget($params)";
echo var_dump($result);
return $result;
});
return $volt;
}
);
// Регистрация сервиса widgetView
$widget = $di->set('widgetView', [
'className' => '\Phalcon\Mvc\View',
'calls' => [
['method' => 'setViewsDir', 'arguments' => [
['type' => 'parameter', 'value' => '../app/widgets/'],
]],
['method' => 'registerEngines', 'arguments' => [
['type' => 'parameter', 'value' => [
".volt" => "voltService",
]],
]],
],
]);
//думал что так он мне больше ошибок выведет но ни ошибок не предупреждений нет:
} catch (Exception $e) {
echo get_class($e), ": ", $e->getMessage(), "\n";
echo " File=", $e->getFile(), "\n";
echo " Line=", $e->getLine(), "\n";
echo $e->getTraceAsString();
}
//результат вардампа:
string(43) "\Widgets\Form::widget(array('2', '4', '5'))"
структура
app/Widgets/Form.php
app/Widgets/View/formView.volt
app/Library/Widget.php
public/index.php - головной файл