我正在使用php框架laravel,我想实现短代码。
是否有人建议如何实施可由用户插入页面或博客帖子的短代码。
示例,假设我想要一个包含某些图像的库的短代码,例如
[画廊= ID]
然后会显示该特定的图库。当然我有画廊模型和画廊&图像表。
我的第一个想法是,我必须扫描页面/帖子的内容并查找短代码,当我找到特定的短代码时,那又是什么?我应该插入什么而不是它?
我无法插入遍历库的PHP代码并生成输出。我想最好的方法是运行一个函数来返回我插入的完整的html代码,而不是短代码。
是否可以从函数返回视图并将结果插入到页面/帖子中?
答案 0 :(得分:1)
要明确的是,我假设您要将其插入存储在数据库或其他内容中的内容块中,而不是在现有的视图文件中。
假设您希望将文本注入视图以供显示,您可以允许内容创建者使用模板格式(如胡须(https://en.wikipedia.org/wiki/Mustache_%28template_system%29)与服务器端回调/帮助/部分(在视图中)填充您的拥有动态内容的自定义标签(在这种情况下为图库链接)。
要点
Blade::directive
:https://www.laravel.com/docs/5.3/blade#service-injection。#2没有必要,但强烈推荐,但#1应该被视为接近宗教。
更新:正如其他答案所指出的,Laravels内置模板Blade,具有此功能,因此坚持其格式和功能。
这是我的建议(伪laravel / php):
$content['blade_markedup_content' => 'here is my new gallery: @gallery(1)']
中传递给视图。@preprocess()
添加到模板/视图中,并使用<p>@preprocess($blade_markedup_content)</p>
代替原始<p>{{$blade_markedup_content}}</p>
。@preprocess()
指令的相应回调函数中
$my_compiler = new BladeCompiler();
@gallery(1)
blade_markedup_content
@preprocess()
; $my_compiler->compileString($blade_markedup_content)
返回
@preprocess($blade_markedup_content)
的解析和替换字符串。答案 1 :(得分:1)
根据您想要的“短代码”类型,这里有很多选项: