npm i -g @adonisjs/cli
adonis new myproject
cd myproject
adonis serve --dev # 启动
# 新建 app/Controllers/Http/SiteController.js
# 类型 ForHttpRequests,同理 post 和 admin/post
adonis make:controller site
adonis make:controller admin/post --resource # 自动curd
# 新建 app/Models/Post.js,修改 PostController.js
adonis make:model post
# 新建 resource/views/posts/index.edge,同理 post/show.edge
adonis make:view post.index
- 项目结构
myproject/
-
app/
-
Models/
-
Controllers/Http/
-
SiteController.js
建
-
PostController.js
建
-
Admin/PiteController.js
建
-
start/
config/
database/
-
resource/views/
-
posts/index.edge
建
-
posts/show.edge
建
server.js
-
.env.development.local
改
- 内容
VUE_APP_API_URL=http://localhost:3000/admin/api
- 内容
VUE_APP_PRIMARY_KEY=_id
// routes.js
const Route = use("Route");
Route.get("/", "SiteController.index");
Route.get("/posts", "PostController.index");
Route.get("/posts/:id", "PostController.show");
Route.resource("/admin/api/posts", "Admin/PostController"); // 自动curd
// SiteController.js
("use strict");
class SiteController {
index() {
return "home";
}
}
module.exports = SiteController;
// PostController.js
("use strict");
const Post = use("App/Models/Post");
class PostController {
async index({ request, view }) {
// return "posts" + request.input("page"); // 获取 /posts?page= 数据
// await Post.create({ title: "标题" });
const posts = await Post.all();
return view.render("posts.index", {
posts: posts.toJSON(),
});
}
async show({ params }) {
const post = await Post.find(params.id); // 获取 /posts/id 数据
return view.render("posts.show", {
post: post.toJSON(),
});
}
}
module.exports = PostController;
// Admin/PostController.js
("use strict");
const Post = use("App/Models/Post");
class PostController {
// Route.resource 含 index create store show edit update destroy
async index({ request, response, view }) {
// 路由 /posts
return await Post.query().paginate(1, 10);
}
async create({ request, response, view }) {
// 路由 /posts/create
}
async store({ request, response }) {
// 路由 POST /posts
const data = request.only(["title"]);
const model = new Post();
model.fill(data);
await model.save();
return model;
}
async show({ params, request, response, view }) {
// 路由 /posts/:id
return await Post.find(params.id);
}
async edit({ params, request, response, view }) {
// 路由 /posts/:id/edit
}
async update({ params, request, response }) {
// 路由 PUT或PATCH posts/:id
const data = request.all();
const model = await Post.find(params.id);
model.merge(data);
await model.save();
return model;
}
async destroy({ params, request, response }) {
// 路由 DELETE posts/:id
const model = await Post.find(params.id);
model.merge(data);
await model.delete();
return { success: true };
}
}
module.exports = PostController;
<!-- index.edge -->
<h1>我的博客</h1>
<ul>
@each(post in posts)
<li><a href="/posts/{{post._id}}">{{post.title}}</a></li>
@endeach
</ul>
<!-- show.edge -->
<h1>{{post.title}}</h1>
<p>创建时间:{{post.created_at}}</p>
网友评论