1 我们要制作如图所示的网站配置列表
![mark](http://on64ewxzt.bkt.clouddn.com/blog/20170731/114104258.png)
如果像以前一样,直接从数据库中所有数据,前台遍历数据的方式,无法生成内容字段对应的文本框,因此,网站配置控制器的index()方法修改如下:
```
public function index()
{
$data = Config::orderBy('conf_order','asc')->get();
foreach($data as $k=>$v){
switch($data[$k]->field_type){
case "input":
$data[$k]['_content'] = '<input type="text" style="width:200px;text-align:left;" name="conf_content[]" value="'.$data[$k]->conf_content.'">';
break;
case "textarea":
$data[$k]['_content'] = ' <textarea name="conf_content[]">'.$data[$k]->conf_content.'</textarea>';
break;
case "radio":
//// 1|开启,0|关闭
// <input type="radio" name="conf_content" value='1'>开启
// <input type="radio" name="conf_content" value='0'>关闭
$arr = explode(',',$data[$k]->field_value);
$str = '';
foreach($arr as $n=>$m){
$r = explode('|',$m);
//判断哪一个单选按钮被选中
$c = ($data[$k]->conf_content == $r[0]) ? 'checked' : '';
//此处的名字一定要[],因为用户可能修改多条配置信息
$str.= ' <input type="radio" name="conf_content[]" '.$c.' value="'.$r[0].'">'.$r[1];
}
$data[$k]['_content'] = $str;
break;
}
}
return view('admin.config.index',compact('data'));
}
```
前台的配置列表页也需要修改,将列表数据嵌套在一个form表单中,此处需要注意,增加一个隐藏域,表示当前配置项的ID,名字一定要以数组形式命名,加`[ ]`
` <input type="hidden" name="conf_id[]" value="{{$v->conf_id}}">`
```
<form action="{{url('admin/config/changecontent')}}" method="post">
<div class="result_wrap">
<div class="result_content">
{{csrf_field()}}
<table class="list_tab">
<tr>
<th class="tc">排序</th>
<th class="tc">ID</th>
<th>标题</th>
<th>名称</th>
<th>内容</th>
<th>操作</th>
</tr>
@foreach($data as $v)
<tr>
<td class="tc">
<input type="text" value="{{$v->conf_order}}" onchange="changeOrder(this,{{$v->conf_id}})">
</td>
<td class="tc">{{$v->conf_id}}</td>
<td>
<a href="#">{{$v->conf_title}}</a>
</td>
<td >{{$v->conf_name}}</td>
<td style="width:100px;">
<input type="hidden" name="conf_id[]" value="{{$v->conf_id}}">
{!! $v->_content !!}
</td>
<td>
{{--admin/user/1/edit--}}
<a href="{{url('admin/config/'.$v->conf_id.'/edit')}}">修改</a>
<a href="javascript:;" onclick="delUser({{$v->conf_id}})">删除</a>
</td>
</tr>
@endforeach
</table>
<tr>
<th></th>
<td>
<input type="submit" value="提交">
<input type="button" class="back" onclick="history.go(-1)" value="返回">
</td>
</tr>
</div>
</div>
</form>
```
后台应对的修改方法changeContent
```
public function changeContent()
{
$input = Input::except('_token');
foreach($input['conf_id'] as $k=>$v){
// 获取此条要被替换成的内容
Config::where('conf_id',$v)->update(['conf_content'=>$input['conf_content'][$k]]);
}
$this->putFile();
return redirect('admin/config');
}
```
- 第一部分 每日内容
- 第一天 需求分析
- 第二天 ER图
- 第三天 git
- 第四天 laravel基础串讲
- 第五天 ORM
- 第六天 项目的后台模板、登录模块、表单验证
- 第七天 用户模块
- 7.1登录中间件
- 7.2用户的添加
- 7.3用户的查询
- 7.4用户的修改
- 7.4用户的删除
- 第八天 分类模块
- 8.1分类表和分类模型
- 8.2分类排序
- 第九天 文件模块
- 9.1百度编辑器
- 9.2文件上传
- 9.3阿里OSS
- 9.4七牛云
- 第十天 网站配置模块
- 10.1网站配置表结构
- 10.2添加网站配置
- 10.3将数据表中的配置信息写入config配置文件中
- 10.4浏览配置信息
- 第十一天 网站前台
- 11.1共享变量
- 11.2前台首页
- 第十二天 RBAC
- 第十三天 手机验证码
- 13.1手机验证码
- 13.2发送验证邮件
- 13.3密码找回
- 第十四天 实用组件
- 第十五天 服务器方面
- LNMP
- MySQL主从
- laravel主从
- 负载均衡
- 第二部分 所需模块
- 1登录模块
- 2注册模块
- 3无限极分类模块
- 4图片管理模块
- 5日志模块
- 6标签模块
- 7购物车模块
- 8验证码模块
- 9支付模块
- 10秒杀模块
- 11验证码模块
- 12消息队列模块
- 13ckplayer播放器
- 14美洽客服插件
- 15markdown和百度编辑器