Closed developeruz closed 7 years ago
Добрый день. PaginationControl для рендеринга ссылок использует ViewComponents\ViewComponents\Component\Control\View\PaginationControlView Этот компонент рендрит шаблон 'controls/pagination' и внутри для каждой ссылки рендерит 'controls/pagination/link'.
Если вам нужно заменить эти шаблоны в PaginationControlView для конкретного грида, это можно сделать примерно так:
$paginationControl->getView()
->setTemplateName('your_pagination_template')
->setTemplate('your_pagination_link_template');
Чтобы использовать php-шаблоны из какой-либо директории проекта, а не из vendors/view-components/resources/views, вам нужно ее зарегистрировать:
Это лучше сделать не в конкретном контроллере, а где-то в bootstrap / сервис-провайдере, так чтобы это работало для всего проекта.
Если вы хотите, чтобы ваши стили использовались для всего проекта в любой пейджинации, не прописывайте конкретные шаблоны компоненту, а просто подмените шаблоны глобально своими кастомизированными.
По поводу onchange элементов фильтра -- можно сделать так, чтобы при выборе значения из селекта, сразу сабмитилась форма,
$selectFilterControl->getView()->setDataItem('autoSubmit', true);
см. view-components\resources\views\select.php
в этом шаблоне есть след. логика:
// support of auto-submitting form on value change
if (isset($autoSubmit) && $autoSubmit === true) {
if (array_key_exists('onchange', $inputAttributes)) {
$inputAttributes['onchange'] .= ';this.form.submit();';
} else {
$inputAttributes['onchange'] = 'this.form.submit()';
}
}
Так же, не смотря на setDestinationParentId('table_footer') пейджинация не перемещается в футер таблицы, а выводится до нее.
Дело в верстке, в tfoot нужно сначала запихнуть
<tr>
<td colspan="сколько там колонок">
/// и только сюда пейджинатор
</td>
</tr>
Для таких штук есть компонент SolidRow
Вот пример пейджинации перемещенной в футер: https://github.com/view-components/grids/blob/master/tests/webapp/Controller.php#L190
А с каким фреймворком вы эти гриды используете?
Спасибо, посмотрю. Использую для Laravel 5 и пока решила остановится на Nayjest/Grids. В целом вами проделана огромная работа! Лучшее из grid-ов под Laravel. Спасибо!
Спасибо за лестный отзыв =)
$grid = new Grid( $provider, $columns );
Подскажите пожалуйста что я делаю не так?
TemplateFinder
искать еще и в другой дирректории, т.к в вендор свой шаблон я добавить не могу (range к примеру для выбора диапазона значений)