使用 Vapor 为 html 中的按钮添加脚本操作
Add script action for buttons in html with Vapor
我正在使用 Swift 4 和 Vapor 2.0 开发网络应用程序。我有一个创建新用户的 POST
请求方法:
builder.post("user", "createUser") { (request) -> ResponseRepresentable in
但是我不知道如何在.leaf
文件中为按钮添加动作来调用createUser
方法。在 .html
文件中添加 JavaScript 动作很容易,就像 <script src="js/index.js"></script>
那样。但是对于 Vapor,我在 Vapor 2.0 docs
中没有看到任何提及
更新:
在@Caleb Kleveter 的帮助下,现在成功了。我更新了 html
页面(它只是为了测试,所以它不是一个很好的页面)希望:它会对使用 vapor
.
时遇到同样问题的新手有所帮助
这是我的HTML内容:
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Responsive Login Form</title>
<link rel='stylesheet prefetch' href='http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css'>
<link rel="stylesheet" href="styles/app.css">
</head>
<body>
<link href='https://fonts.googleapis.com/css?family=Ubuntu:500' rel='stylesheet' type='text/css'>
<h3>
<form action="/user/createUser" method="POST" class="login-form">
<label for="username">Username:</label>
<input type="text" placeholder="Username" name="username"/>
<label for="password">Password:</label>
<input type="password" placeholder="Password" name="password"/>
<input type="submit" value="Login" class="login-button"/>
<form>
</h3>
<a class="sign-up">Sign Up!</a>
<br>
<h6 class="no-access">Can't access your account?</h6>
</div>
</div>
<!-- <div class="error-page">
<div class="try-again">Error: Try again?</div>
</div> -->
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src='http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js'></script>
<script src="js/index.js"></script>
</body>
</html>
可以像在 HTML 中一样将脚本添加到 .leaf
文件,只需添加一个脚本标签:
<script src="js/index.js"></script>
从您的代码来看,您想要的是 form
到 post 到服务器的数据。您应该将 .login-form
div
替换为 form
元素:
<form action="/create-user" method="POST" class="login-form">
<label for="username">Username:</label>
<input type="text" placeholder="Username" name="username"/>
<label for="password">Password:</label>
<input type="password" placeholder="Password" name="password"/>
<input type="submit" value="Login" class="login-button"/>
<form>
<a class="sign-up">Sign Up!</a>
<h6 class="no-access">Can't access your account?</h6>
Here is the documentation 用于 HTML 表格。
那么你应该能够在你的路由方法中访问表单数据 request.body
:
func createUser(req: Request) throws -> ResponseRepresentable {
guard let password = req.body["password"]?.string,
let username = req.body["username"]?.string else {
throw Abort.badRequest
}
// The rest of your code goes here
}
我不确定这是否可行,我还没有测试过,但我想你明白了。
我正在使用 Swift 4 和 Vapor 2.0 开发网络应用程序。我有一个创建新用户的 POST
请求方法:
builder.post("user", "createUser") { (request) -> ResponseRepresentable in
但是我不知道如何在.leaf
文件中为按钮添加动作来调用createUser
方法。在 .html
文件中添加 JavaScript 动作很容易,就像 <script src="js/index.js"></script>
那样。但是对于 Vapor,我在 Vapor 2.0 docs
更新:
在@Caleb Kleveter 的帮助下,现在成功了。我更新了 html
页面(它只是为了测试,所以它不是一个很好的页面)希望:它会对使用 vapor
.
这是我的HTML内容:
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Responsive Login Form</title>
<link rel='stylesheet prefetch' href='http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css'>
<link rel="stylesheet" href="styles/app.css">
</head>
<body>
<link href='https://fonts.googleapis.com/css?family=Ubuntu:500' rel='stylesheet' type='text/css'>
<h3>
<form action="/user/createUser" method="POST" class="login-form">
<label for="username">Username:</label>
<input type="text" placeholder="Username" name="username"/>
<label for="password">Password:</label>
<input type="password" placeholder="Password" name="password"/>
<input type="submit" value="Login" class="login-button"/>
<form>
</h3>
<a class="sign-up">Sign Up!</a>
<br>
<h6 class="no-access">Can't access your account?</h6>
</div>
</div>
<!-- <div class="error-page">
<div class="try-again">Error: Try again?</div>
</div> -->
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src='http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js'></script>
<script src="js/index.js"></script>
</body>
</html>
可以像在 HTML 中一样将脚本添加到 .leaf
文件,只需添加一个脚本标签:
<script src="js/index.js"></script>
从您的代码来看,您想要的是 form
到 post 到服务器的数据。您应该将 .login-form
div
替换为 form
元素:
<form action="/create-user" method="POST" class="login-form">
<label for="username">Username:</label>
<input type="text" placeholder="Username" name="username"/>
<label for="password">Password:</label>
<input type="password" placeholder="Password" name="password"/>
<input type="submit" value="Login" class="login-button"/>
<form>
<a class="sign-up">Sign Up!</a>
<h6 class="no-access">Can't access your account?</h6>
Here is the documentation 用于 HTML 表格。
那么你应该能够在你的路由方法中访问表单数据 request.body
:
func createUser(req: Request) throws -> ResponseRepresentable {
guard let password = req.body["password"]?.string,
let username = req.body["username"]?.string else {
throw Abort.badRequest
}
// The rest of your code goes here
}
我不确定这是否可行,我还没有测试过,但我想你明白了。