类似于添加栏目和文章完善添加友情链接的功能
分别新建友情链接link对应的视图模板、控制器和验证器文件:
打开phpmyadmin,新建tp5_link数据表储存链接信息:
修改侧边栏导航sidebar.html文件,添加友情链接列表导航
<li><a href="{:url('link/lists')}">友情链接</a></li>
在友情链接列表模板Link/lists.html中添加新增链接跳转
<a href="{:url('link/add')}"><i class="icon-font"></i>新增链接</a>
新建Link/add.html文件作为增加模板,友情链接的四个字段分别为id,链接题目title,链接url地址url,链接描述desc
post提交方式,默认提交到当前控制器的当前操作方法
<form action="" method="post" id="myform" name="myform" enctype="multipart/form-data">
<table class="insert-tab" width="100%">
<tbody>
<tr>
<th width="10%">链接名称:</th>
<td>
<input class="common-text required" id="title" name="title" size="50" value="" type="text">
</td>
</tr>
<tr>
<th>链接地址:</th>
<td>
<input class="common-text" name="url" size="50" value="" type="text">
</td>
</tr>
<tr>
<th>链接描述:</th>
<td>
<textarea name="desc" class="common-textarea" id="desc" cols="30" style="width: 98%;" rows="10"></textarea>
</td>
</tr>
<tr>
<th></th>
<td>
<input class="btn btn-primary btn6 mr10" value="提交" type="submit">
<input class="btn btn6" οnclick="history.go(-1)" value="返回" type="button">
</td>
</tr>
</tbody>
</table>
</form>
新建validate/Link.php验证器
需要验证链接标题,链接地址的格式:
<?php
namespace app\admin\validate;
use think\Validate;
class Link extends Validate
{
//验证规则
protected $rule = [
'title' => 'require|max:25|unique:link',
'url' => 'require|url',
];
//验证提示
protected $message = [
'title.unique' => '链接名称不能重复',
'title.max' => '链接名称不能大于5个字符',
'title.require' => '链接名称必须',
'url.require' => '链接地址必须',
'url.url' => '无效的url地址',
];
}
新建controller/Link.php作为链接模板的控制器
<?php
namespace app\admin\controller;
use think\Controller;
class Link extends Controller
{
public function lists()
{
return $this->fetch();
}
public function add()
{
if(request()->isPost()){
$data = [
'title'=>input('title'),
'url'=>input('url'),
'desc'=>input('desc'),
];
$validate = \think\Loader::validate('Link');
if($validate->check($data)){
$res = \think\Db::name('link')->insert($data);
if($res){
return $this->success('添加链接成功','lists');
}else{
return $this->error('添加链接失败');
}
}else{
return $this->error($validate->getError());
}
return;
}
return $this->fetch();
}
}
最终效果如下: