Как сделать GridView ряд кликабельным, кроме action колонки в Yii2

· Yii2 и Снипеты · 1 мин чтения

В этой записи, я покажу как сделать ряд в GridView виджете кликабельным, т.е. при нажатии на ряд, ваc будет перекидывать на детальный вид объекта. 

Решение очень простое: использовать $this->registerJs() внутри view файла, написать небольшой JavaScript код, который наложит событие нажатия на <td> элементы (кроме action ссылок, по типу удаления, изменения и т.д.).

Рабочий вариант

<?php 

...

$this->title = 'Клибальные ряды';

$this->registerJs("

    $('tbody td').on('click', function (e) {
        // Получить ближайший ID в <tr> из data-key атрибута
        var id = $(this).closest('tr').data('key');
        if(e.target == this)
            location.href = '" . Url::to(['controller/action']) . "?id=' + id;
    });

", yii\web\View::POS_END);
?>


<?= GridView::widget([

    ...

]); ?>

Важно

Вместо Url::to(['controller/action'])  поставьте свое название контроллера и action’а. Так же возможно придется немного поиграть с ссылкой при нажатии, но это уже на ваше усмотрение.