I am using Swift and Leaf Template to build a website and I am trying to render some cards based on the length of the array. I am stuck here. Someone should please help me out.
func handleArticleList(_ req: Request) -> EventLoopFuture<View> {
var articles = [ArticleList]()
// Populate the articles array with some data
let article1 = ArticleList(articleName: "Article 1", articleImage: "image1.jpg", articleDescription: "Description of Article 1")
let article2 = ArticleList(articleName: "Article 2", articleImage: "image2.jpg", articleDescription: "Description of Article 2")
let article3 = ArticleList(articleName: "Article 3", articleImage: "image3.jpg", articleDescription: "Description of Article 3")
articles.append(article1)
articles.append(article2)
articles.append(article3)
for article in articles {
print("Article Name: \(article)")
// print("Article Image: \(article.articleImage)")
// print("Article Description: \(article.articleDescription)")
print("---")
}
print("value: \(articles.count)")
// Convert the array of ArticleList objects into an array of dictionaries
let articleDictionaries = articles.map { article in
return [
"articleName": article.articleName,
"articleImage": article.articleImage,
"articleDescription": article.articleDescription
]
}
// print(articleDictionaries)
let context: [String: Any] = [
"articles": articles,
"value": articles.count
]
// print("CONTEXT : \(context.count)")
return req.view.render("index", context )
}
}
struct ArticleList: Encodable {
var articleName: String
var articleImage: String
var articleDescription: String
}
My Leaf Template
<main>
//bunch of tailwind and HTML
#for(planet in articles):
<li>
<h2>#(planet.articleName)</h2>
</li>
#endfor
<p>#(articles.count)</p>
</div>
</div>
</main>