Я испек плагин и добавил файл \plugins\MyPlugin\src\View\Widget\BasicWidget.php
:
namespace Cake\View\Widget;
use Cake\View\Widget\BasicWidget as BaseBasicWidget;
use Cake\View\Form\ContextInterface;
/**
* Basic input class.
*
* This input class can be used to render basic simple
* input elements like hidden, text, email, tel and other
* types.
*/
class BasicWidget implements BaseBasicWidget
{
public function render(array $data, ContextInterface $context)
{
$data += [
'name' => '',
'val' => null,
'type' => 'text',
'escape' => true,
'templateVars' => []
];
$data['value'] = $data['val'];
unset($data['val']);
return $this->_templates->format('input', [
'name' => $data['name'],
'type' => $data['type'],
'value' => $data['value'],
'templateVars' => $data['templateVars'],
'attrs' => $this->_templates->formatAttributes(
$data,
['name', 'type']
),
]);
}
}
Документация здесь не объясняет, как сделать этот виджет активным: https://book.cakephp.org/3.0/en/views/helpers/form.html#adding-custom-widgets.
Он предлагает использовать $config['widgets']
примерно так:
$this->loadHelper('Form', [
'widgets' => [
'basic' => ['MyPlugin.Basic']
]
]);
, но в конечном итоге он ищет путь к плагину `\ config 'со следующей ошибкой:
Could not load configuration file: /Users/geoidesic/MyProject/config/Basic.php