Как сделать так, чтобы виджет плагина перекрывал CakePHP BasicWidget по умолчанию - PullRequest
0 голосов
/ 14 апреля 2019

Я испек плагин и добавил файл \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
...