Номер итерации и номер документа
Closed this issue · 5 comments
В контроллерах site_content, shopkeeper и onetable начальный номер итерации задается как $i = 1
site_content
onetable
shopkeeper
Затем этот номер передается в uniformPrepare
site_content
onetable
shopkeeper
Но в самом uniformPrepare i по дефолту установлено в 0
У меня создалось ощущение, что предусматривалась возможность создания своих контроллеров, где итерация будет начинаться с 0, а не с 1.
На эту мысль меня также наводит тот факт, что в этой строке 0 считается нечетным, то есть как бы 1-м документом в списке.
Но если это так, тогда этому противоречит эта строка, где жестко записано, что 1-й элемент - это элемент с номером итерации 1.
Отсюда идет неверное определение шаблонов tplOdd и tplEven в DocLister, а также путаница с первым tplIdN (0 или 1). В доках эти шаблоны начинаются с tplId0, в реальности во всех контроллерах с tplId1.
Если я неправ в своем предположении, что предусматривалась возможность начинать нумерацию док-тов (и соотв. шаблонов) с 0, и начальное $i всегда будет 1, то достаточно просто исправить эту строку, поменяв == 0 на == 1.
Если же прав, то, возможно, нужно разделить понятия "номер итерации" ($i) и "номер документа" (пусть будет $num), итерация будет с 0, а номер так, как задано - с 0 или с 1. И соответственно добавить функции uniformPrepare аргумент $start (откуда стартует номер док-та - с 0 или 1).
Если я неправ в своем предположении, что предусматривалась возможность начинать нумерацию док-тов (и соотв. шаблонов) с 0, и начальное $i всегда будет 1, то достаточно просто исправить эту строку, поменяв == 0 на == 1.
Это исправление позволяет правильно определить четность итерации: если остаток от деления на 2 равен 1, то нечетная (odd), иначе - четная (even).
Нужно исправить в контроллерах начальное значение $i на 0, в dl.iteration записывать $i+1, на четность проверять $i + 1. Тогда по идее все будет работать, как задумывалось.
Но раз tplId0 никто не использует из-за этой путаницы с $i, то может и не нужно ничего исправлять (кроме определения четности и документации)?
Я использую, вот в чем дело-то :) а ваши исправления на первый взгляд правильные, если исправите - я ПР в доки закину.
@Pathologic по данному тикету вопрос решен? Или планируешь переделать как и предложил?
В общем-то, раз @Aharito убрал из документации tplId0, то и переделывать нечего, разве что можно убрать из комментариев пояснение, что нумерация начинается с нуля.