ошибка как ошибка) старайтесь писать весь сценарий, выполняемый на странице, в одном файле, если это не библиотека и не виджет. Чем больше файлов вы подключаете, тем медленнее загружает страницу.
а что рыть, она должна выбиваться в консоль, это означает прекращение выполнения нижеследующего скрипта скрипта. Если ошибка не выбивается, убедитесь, что этот фрагмент вообще выполняется, расставив console.log
это зависит от того, что вы хотите сделать с полем "телефон".
Понимаете, принято разделять "клиент" и "сервер". Клиент в нашем случае - то, что видно в браузере. Поля, кнопочки, картинки, вся разметка. Сервер - то, что обрабатывает данные, которые получает от клиента. Там нет никаких кнопочек, картинок, там просто бизнес-логика и запросы в базу данных.
Вы добавили поле - "введите номер телефона". Замечательно, теперь в формочке есть окошко и подсказка - "введите номер телефона". Но что с ним делать, куда сохранять, как обрабатывать, короче, серверную часть нужно тоже дописать, чтобы новое поле было не только для красоты, а и как-то использовалось.
Исправил в ответе, смотрите выше.
если это подходит вам и они действительно одинаковые для каждого action каждого контроллера, то да (только учтите, что action, которые возвращают json или результат операции, они явно не нужны). Для этого советую создать базовый класс-контроллер и вписать:
function __construct($id, $module, $config = [])
{
parent::__construct($id, $module, $config);//вызываем родительский, для продолжения цепочки конфигураций
$this->view->on(yii\web\View::EVENT_BEFORE_RENDER,[$this, "registMenu"]);
}
protected function registMenu()
{
//подвязываем событие "перед тем как рендерить"
$this->view->params['models'] = MenuData::findAll();
//и тд
}
а потом унаследовать свои контроллеры от него.
Если все-таки не для всех actions, то стоит писать для каждого action в отдельности, надо ли ему регистрировать данные для меню.
что-то вроде
public function actionIndex()
{
$this->registMenu(); //регистрируем данные для вьюхи
//...
}
public function actionUpdate() {
// не регистрируем
}
если мы про вариант копирования папок, то симлинкам мешает нарушение принципа DRY. Без обобщения любое изменение придется повторять дважды, а если изменения будут несимметричны, то начался отчет до того момента, когда мы запутаемся и всё-таки решим обобщить.
в каком смысле какого контроллера? в самом по себе виджете нет контроллеров; речь идёт про yii2; вопрос звучит "как правильно работать с layouts?". Я делаю вывод, что речь идёт про обычное веб-приложение, всё ещё с MVC архитектурой, в которой layouts это просто фича рендеринга вьюхи, нужная для регистрации скриптов, стилей и общих виджетов.
Следовательно, чтобы использовать тот или иной layout, вы можете написать $this->layout = "нужныйВамLayout"; в action своего контроллера админки. Сам по себе виджет ведь не будет управлять запросами и реализовывать логику вашего приложения, да?
возможно, я неправ, но в документациях тоже бывают устаревшие ссылки. По рекомендуемой ссылке у меня тоже проблемы - туда просто не заходит. А вот https://console.developers.google.com/apis/api/youtube/ - здесь можно найти информацию о ключе и о том, как его использовать для youtube. Мне кажется, нужно попробовать сначала этот вариант, пока нет иного
а... Ну, в таком случае можно добавить в папку widgets класс CustomNavBar extents yii\bootstrap\NavBar, и... самое простое решение - переопределить функцию renderToggleButton;
renderToggleButton() {return ''}
а в layouts/main.php вместо use yii\bootstrap\NavBar; написать use app\widgets\CustomNavBar;
Потому что в стандартном NavBar bootstrap функция renderToggleButton() выполняется вне зависимости от options и её нельзя отключить массивом настроек.