我正在关注这些家伙Martin Lasek Tutorials,现在我正在"图片上传".似乎没人能回答"如何上传i Vapor 3图像"的问题
Db连接正常,所有其他值都保存.
这是我的创建方法:
func create(_ req: Request) throws -> Future<Response> {
return try req.content.decode(Question.self).flatMap { question in
return question.save(on: req).map { _ in
return req.redirect(to: "/form")
}
}
}
Run Code Online (Sandbox Code Playgroud)
和型号:
final class Question: PostgreSQLModel {
var id: Int?
var questionText: String
var answers: [String]
var theme: String?
var imageName: String?
var imageData: File?
init(id: Int? = nil, questionText: String, answers: [String], theme: String, imageName: String?, imageData: File?) {
self.id = id
self.questionText = questionText
self.answers …Run Code Online (Sandbox Code Playgroud) 我在做教程时遇到了这个错误。我无法解决问题。因此,我删除了该项目并创建了一个新的简单项目来找出问题,但仍然存在相同的问题。我正在发布相关代码 -
package.swift 代码 -
// swift-tools-version:4.0
import PackageDescription
let package = Package(
name: "dep",
products: [
.library(name: "dep", targets: ["App"]),
],
dependencies: [
// A server-side Swift web framework.
.package(url: "https://github.com/vapor/vapor.git", from: "3.0.0"),
// Swift ORM (queries, models, relations, etc) built on SQLite 3.
.package(url: "https://github.com/vapor/fluent-sqlite.git", from: "3.0.0"),
.package(url: "https://github.com/vapor/leaf.git", from: "3.0.0"),
],
targets: [
.target(name: "App", dependencies: ["Leaf","FluentSQLite", "Vapor"]),
.target(name: "Run", dependencies: ["App"]),
.testTarget(name: "AppTests", dependencies: ["App"])
]
Run Code Online (Sandbox Code Playgroud)
)
当我在终端中执行“vapor build”并按回车键时,终端显示错误 - “”/Users/apple/dep: error: package at …
一般来说,我对 Vapor 和后端逻辑非常陌生。\n我正在使用 Leaf 构建一个简单的 Web 应用程序,我正在尝试从 psql 数据库读取数据并将其显示在 html/css (leaf) 中页。\n问题是,当我将参数传递到页面时,它不会加载 css 和图像。
\n\n这是我的控制器中的功能
\n\nmy project configuration:\n\nApp\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Package.swift\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Resources\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Views\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 index.leaf\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Public\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 images (images resources)\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 styles (css resources)\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Sources\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 App\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Controllers\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 PoesiaController.swift\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Models\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Poesia.swift\n\nfinal class PoesiaController {\n\nfunc createView(_ req: Request) throws -> Future<View> {\n let id: Int = try req.parameters.next(Int.self)\n return Poesia.find(id, on: req).unwrap(or: NSError(domain: "errore", code: 1, userInfo: nil)).flatMap(to: View.self) { p in\n return try …Run Code Online (Sandbox Code Playgroud) 我需要在 Swift Vapor 应用程序中创建一个复杂的 html 表。
问题是:Leaf 似乎不支持对 #(somevar += 1) 之类的变量进行计数,也不支持将 #(somevar1 + somevar2) 之类的字符串变量连接起来
所以我决定在应用程序中创建我的复杂表并将其传输到变量内的 html 模板。(在 php 中我一直都习惯这样做)
在模板中,我将变量称为
#(table)
Run Code Online (Sandbox Code Playgroud)
但事实证明,当叶子转义所有变量时,我得到了纯 html 代码。
但是有 #raw() 函数可以打印出纯 html。
所以我做
<!DOCTYPE html>
<html lang="de">
<head><title>Server</title></head>
<body>
<..>
<form action="parameters" method="post">
// here is the thing: leaf gets a html table within the string 'table'.
// If I do it like that lead doesn't recognize #(table) as a leaf variable.
#raw( #(table) )
<button type="submit">Save</button>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
只是发现 #raw() …
我一直在尝试使用带有Vapor 3的模板引擎Leaf渲染计算的属性,但是到目前为止还没有运气。如果存储相同的属性,则一切正常。如果我进行了计算,网页上将不会显示任何内容。我知道这种解决方案无法正常工作的原因,但我想知道是否有任何方法可以使它正常工作。
元素渲染代码:
struct SocialLinkContext: Encodable, CSSStyleable {
let hyperlinkURI: String
let classes: [String]
//let styleClasses: String
init(hyperlinkURI: String, classes: [String]) {
self.hyperlinkURI = hyperlinkURI
self.classes = classes
//self.styleClasses = classes.joined(separator: " ")
}
//Seems not to be supported by Leaf
var styleClasses: String {
return self.classes.joined(separator: " ")
}
}
Run Code Online (Sandbox Code Playgroud)
该部分main_page.leaf文件:
...
<div class="row banner">
<div class="banner-text">
<h1 class="responsive-headline">Hello, world!</h1>
<hr />
</div>
#embed("social_links")
</div>
...
Run Code Online (Sandbox Code Playgroud)
该social_links.leaf文件:
<ul class="social">
#for(socialContext in socialLinks) {
<li> …Run Code Online (Sandbox Code Playgroud) 配置:
蒸气 4 | 更新测试版和软件包 | macOS Catalina v.10.15.3 | XCode 11.4 测试版 2 | 引导 CDN 4.4.1
我无法切换导航栏按钮。我不确定这是否是 Leaf 中的错误。我已经按照正确的顺序实现了 Bootstrap 和 CSS。尝试运行此代码。不要忘记将浏览器窗口的大小调整为移动或平板电脑视图以显示导航栏切换按钮。这是我的叶子代码:
// 基.叶
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0"/>
<meta name="apple-mobile-web-app-capable" content="yes" />
<!-- <link rel="stylesheet" href="/styles/bootstrap.min.css"/>-->
<link rel="stylesheet" href="/fonts/fa/css/all.min.css"/>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link rel="stylesheet" href="/styles/main.css"/>
<link rel="stylesheet" href="/styles/header.css"/>
<link rel="stylesheet" href="/styles/footer.css"/>
<title>#(metaContent.title)</title>
<meta name="description" content="#(metaContent.description)"/>
</head>
<body>
<header>
<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
<a class="navbar-brand" href="#">Carousel</a>
<button …Run Code Online (Sandbox Code Playgroud) 我从 Vapor 3 更新到 4,从 Xcode 11 更新到 12。现在 Leaf 找不到我的 *.leaf 模板。我收到“noTemplateFile”错误。
那是错误
请选择您喜欢的ViewRenderer,有多个可用:PlaintextRenderer,LeafRenderer.
这是我在configure.swift中的代码
try services.register(LeafProvider())
config.prefer(LeafRenderer.self, for: TemplateRenderer.self)
Run Code Online (Sandbox Code Playgroud)
Leaf添加到Package.swift
.target(name: "App", dependencies: ["Vapor", "FluentSQLite", "Crypto", "Leaf"]),
Run Code Online (Sandbox Code Playgroud)
虽然我做了蒸汽xcode,Build and Run,但它仍然拒绝工作.
我只是新手,想要了解更多有关服务器端swift with vapor的信息,现在我真的在使用steam swift动态地叠加在show image上.在我的情况下.我有文件夹上的图像:
public - > images - > a.png,b.png
我在我的数据库上有图像名称,我想在叶子文件上获取显示图像的请求,我的图像的参数名称,如何实现它.非常感谢.