Potrzebuję dodać nowy, niestandardowy przycisk do Yii2's ActionColumn. Korzystając z przykładów dostępnych w Internecie, udało mi się utworzyć zamknięcie do renderowania przycisku niestandardowego, a teraz renderuje się z domyślnym adresem URL.Przycisk ActionColumn z niestandardowym adresem URL
Ale potrzebuję go z niestandardowym adresem URL.
udało mi się to zrobić, nadrzędnymi $url
wartość, że funkcja zamknięcie mojego przycisk niestandardowy jest karmione, z adresem URL generowanych za pomocą innych parametrów funkcji, tak jak:
'buttons' => [
'see' => function ($url, $model, $key) {
$options = [
'title' => Yii::t('yii', 'See in frontend'),
'aria-label' => Yii::t('yii', 'See'),
'data-pjax' => '0',
];
$url = \yii\helpers\Url::toRoute(['lab/index', 'lab' => $key]);
return Html::a('<span class="glyphicon glyphicon-asterisk"></span>', $url, $options);
}
],
To działa, ale to isn” zbyt profesjonalny. Chciałem użyć urlCreator
nieruchomości, jak pokazano na Kartik's example from Yii Forum:
'urlCreator' => function ($action, $model, $key, $index) {
if ($action === 'see') {
return \yii\helpers\Url::toRoute(['lab/index', 'lab' => $key]);
}
}
Ale ten przykład nie działa. Generuje tylko poprawny adres URL dla mojego przycisku niestandardowego i pozostawia domyślne przyciski nie działające, bez żadnego adresu URL. Jest to zrozumiałe, zakładając, że działa urlCreator
. Ale jak rozwiązać ten problem? Jak uzyskać dostęp do usługi ActionColumn
, aby użyć właściwości controller
do generowania adresów URL dla przycisków domyślnych lub jak zmusić ją do wygenerowania dla mnie tych adresów URL?
Brzmi świetnie. Ale wciąż pozostaje pytanie, dlaczego musimy grać z 'urlCreator' w ogóle, aby to osiągnąć, zamiast modyfikować' $ url' bezpośrednio w zamknięciu przycisku, jak pokazałem w moim "leniwym" podejściu. Wydaje się, że lepiej mieć niestandardowy przycisk renderowania i niestandardowy URL w jednym miejscu, prawda? – trejder
Zgadzam się, że to nie jest najlepszy sposób na ustawienie kodu dla przycisków domyślnych. Ale zastępujesz metodę 'ActionColumn :: createUrl'. Oznacza to, że musisz ustawić kod dla przycisków niestandardowych i domyślnych. Inny sposób nie jest ustawiony. –