Qt+Cutelyst学习笔记(十三)win10+Qt5.15.2 创建一个简单的控制器和一个动作

前言:

上一篇测试了grantlee视图插件,本篇记录下创建一个简单控制器和一个动作的测试过程

一、创建CUTELYST项目

找一个空白目录,注意不能有中文或空格,执行如下命令

#创建应用
cutelyst3-qt5.exe --create-app myapp

#进入应用目录
cd myapp

#创建名为“Site”的控制器
cutelyst3-qt5.exe --controller Site


 注:一定要进入应用的目录,否则创建控制器会出现异常

通过执行cutelyst命令创建名为“Site”的控制器,将创建一个src/site.cpp和src/site.h文件,但笔者发现,这两个文件没什么可看的,并且需要手工注册这个控制器

二、修改源码并编译

使用QtCreator打开并配置工程,

1.修改src/CMakeLists.txt工程

target_link_libraries(Hello
    ...
    Cutelyst::View::Grantlee # Add this line
    ...
}

2.创建Grantlee视图

修改src/myapp.cpp

...
#include <Cutelyst/Plugins/View/Grantlee/grantleeview.h>
...
bool myapp::init()
{
    ...
    new GrantleeView(this);
    ...
}

在src/site.h中,加入如下公有函数

C_ATTR(test, :Local)
void test(Context *c);

注:测试方法上的“Local”属性。这将导致在“控制器/方法”URL上执行测试操作 ,本例是"site/test"

在src/site.cpp中,添加实现

void Site::test(Context *c)
{
    c->stash({
                 {"username", "John"},
                 {"template", "site/test.html"}
             });
}

默认情况下,Grantle将尝试呈现一个遵循命名模式“controller/method.html”的模板,我们在这里遵循该模式。但是,在其他情况下,需要指定模板文件 

变量“username”放入了存储库中,以便在模板中使用。

3.注册控制器

在src/myapp.cpp中添加:

....
#include "site.h"
....
bool myapp::init()
{
    ....
    new Site(this);
    ....
}

注册完成后,直接编译,可以得到生成的动态库

windows下是myapp.dll

linux下是libmyapp.so

二、运行新的动态库

创建一个root/site/test.html模板文件。以下是一个简单的示例:

<p>Hello, {{ username }}!</p>

设置好环境变量,执行如下命令

#运行服务
cutelyst3-qt5.exe --server --app-file src/myapp -- --chdir ..

#--app-file 后的参数是应用程序(dll库)的位置,请读者自行修改
#注:可以省略dll扩展名

注:可以省略应用程序后缀,如.so, .dll, .dylib,因为它会自动查找带有适当后缀的文件。

注:--chdir 后面的参数,是root所在的目录,使用影子编译的小伙伴要注意下,一定要放对参数

命令行输出如下

运行后,打开本地浏览器,输入 http://localhost:3000/site/test,显示如下

 命令行输出如下

 至此,本次测试完成

 本次测试示例源码下载

后记

笔者一开始,没有放入Grantlee视图相关的代码,结果无法正常运行,小伙伴测试时,要注意下

下一篇继续探究

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

꧁白杨树下꧂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值