JTBC5.0模块添加字段时自定义名称如何调用?
建站时,JTBC5.0模块默认字段通常是不够使用的,这时我们会自行添加一些字段,这些字段的名称在系统中有时没有默认值。
我们就需要在添加字段时使用自定义名称。
这个自定义字段名称的调用,系统是默认不支持的。
如果需要调用模块添加字段时的自定义名称,就需要进行二次开发。
实现步骤:
1.前台代码修改
打开文件Public/news/common/diplomat/index.php
添加处理函数
public function getFieldText($data)
{
if(is_array($data)){
$model = new TinyModel();
$tableInfos = [];
foreach ($model -> table -> getTableInfo() as $tableInfo)
{
if(Validation::isJSON($tableInfo['comment'])){
$texts = JSON::decode($tableInfo['comment']);
if(!empty($texts['text'])) $tableInfos[$tableInfo['field']] = $texts['text'];
}
}
foreach ($data as $key => $item)
{
if(!empty($tableInfos[$key])) $data[$key.'_text'] = $tableInfos[$key];
}
}
return $data;
}
说明:字段的自定义名称是存储在字段注释中的,需要查询并处理。
2.修改列表页和详情页输出
同样打开文件Public/news/common/diplomat/index.php
public function list(Request $req, Response $res)
找到
$result = $renderer -> render($data -> toArray());
修改为
$result = $renderer -> render($this -> getFieldText($data -> toArray()));
public function detail(Request $req, Response $res)
找到
$result = $renderer -> render([$rs -> all()]);
修改为
$result = $renderer -> render([$this -> getFieldText($rs -> all())]);
3.模板中调用
比如新建的字段为name,名称为新闻标题
则模板中调用方法:
{$name_text}:{$name}
4.结束