Страница 1 из 1

Yii2 + Twig: как не верстать в контроллере?

Добавлено: 2018.01.22, 10:06
rudnik_
Плохо делать так:

Код: Выделить всё

class SiteController extends Controller
{
    public function actionIndex()
    {
        $rowOptionsFunction = function ($model) {
            return ['class' => $model->status === 1 ? 'green' : 'red'];
        };

        return $this->render('index.twig', [
            'dataProvider' => $dataProvider,
            'rowOptionsFunction' => $rowOptionsFunction
        ]);    
    }
}


{{ grid_view_widget({
    'dataProvider': dataProvider,
    'rowOptions': rowOptions
}) }}
Таких примеров куча, когда нужно изменить верстку в зависимости от значения модели в строке. И получается верстальщик без программиста ничего не сможет сделать.
Есть ли более человеческие способы в связке Yii+Twig, чтобы контроллер оставался контроллером, а вьюха - вьюхой?

Re: Yii2 + Twig: как не верстать в контроллере?

Добавлено: 2018.01.22, 10:41
Nex-Otaku
Передай модель и сделай выбор во вьюхе виджета.

Re: Yii2 + Twig: как не верстать в контроллере?

Добавлено: 2018.01.22, 11:04
ElisDN

Re: Yii2 + Twig: как не верстать в контроллере?

Добавлено: 2018.01.22, 11:18
urichalex
Не использовать GridView

Re: Yii2 + Twig: как не верстать в контроллере?

Добавлено: 2018.01.22, 11:25
rudnik_
Nex-Otaku писал(а): 2018.01.22, 10:41 Передай модель и сделай выбор во вьюхе виджета.
ElisDN писал(а): 2018.01.22, 11:04 https://twig.symfony.com/doc/2.x/tags/if.html
видимо, я что-то не понимаю в gridview. подскажите, пожалуйста. как задать виджету вьюху строки (где уже можно работать с моделью и if-ами)? он же сам рисует теги через renderTableRow...

Re: Yii2 + Twig: как не верстать в контроллере?

Добавлено: 2018.01.22, 11:26
rudnik_
urichalex писал(а): 2018.01.22, 11:18 Не использовать GridView
пока склоняюсь к этому варианту

Re: Yii2 + Twig: как не верстать в контроллере?

Добавлено: 2018.01.22, 12:07
urichalex
rudnik_ писал(а): 2018.01.22, 11:26
urichalex писал(а): 2018.01.22, 11:18 Не использовать GridView
пока склоняюсь к этому варианту
Это лучший вариант