Это довольно просто, если вы используете условное выражение, чтобы проверить, существует ли переменная.
#if (page.table != nil) {
#for(row in page.table.rows) {
<tr>
#for(data in row.datas) {
<td>#(data)</td>
}
</tr>>
}
}else {
#for(row in page.grid.table.rows) {
<tr>
#for(data in row.datas) {
<td>#(data)</td>
}
</tr>>
}
}
Это всего лишь пример, вы можете сделать код немного больше, но база то же самое, проверьте, существует ли переменная, и затем используйте ее.
Редактировать: Вы можете использовать класс Wrapper, который хранит переменные того же типа, например. В приведенном выше коде у вас есть матрица я думаю, строки, вы можете сделать что-то вроде этого:
class Wrapper: Content {
let table: [[String]]
init(table: [[String]]){
self.table = table
}
}
, а затем, если у вас есть page.table, вы приведете его к оболочке, как:
let wrapper = Wrapper(table: page.table)
// Or if you have page.grid.table
let wrapper = Wrapper(table: page.grid.table)
И используйте его в Vapor leaf так:
#for(row in wrapper.table) {
<tr>
#for(data in row.datas) {
<td>#(data)</td>
}
</tr>>
}