namespace components;
class NavBar extends \yii\bootstrap\NavBar
{
public function init()
{
parent::init();
Html::removeCssClass($this->options, 'navbar');
}
}
<?php
use components\NavBar;
NavBar::begin([
'renderInnerContainer' => false,
'options' => [
'renderInnerContainer' => false,
'tag' => 'div',
'class' => 'row',
],
]); ?>
...
<?php NavBar::end(); ?>
Хорошо, пример.
Вы должны свалидировать данные о файле и сохранить его. Вы это сделали в 3 строчки в контролере(по факту в нескольких контролерах и еще наверняка в нескольких экшенах), и вроде всё окей. Проект развивается и нам уже нужно писать не себе на диск, а по АПИ. Поздравляю, вы встряли.
В случае следования сразу правильной парадигме, мы просто меняем описание сущности(а может даже и его не придется менять) и меняем процесс валидации/записи в моделе.
Патерны, парадигмы и "бест практикс" созданны именно для предотвращения "казусов", с которыми уже вдоволь навстречались профессионалы.
По поводу того, что иногда производительнее делать это в контролере - и да, и нет. Вообще производительнее писать на Си или асемблере, будет пользы в несколько раз точно больше, чем экономить на одном вызове и создании доп. объекта.