1.wenjuan2021后台用户登录
1.views/index.blade.php 视图中,将请求匹配到特定路由Route中
<div class="submit_btn">
<input type="submit" id="btn_submit" class="btn" value="提交" /><br><br>
<a href="/login">后台</a>
</div>
2.跳转路由地址栏wenjuan2021/login 到routes.php中,映射到特定UserController.php中,控制器处理请求
Route::get('/login','UserController@login');
3.控制器UserController.php获取请求,返回到视图login.blade.php中
public function login(){
return View::make('user.login');
}
4.视图login.blade.php中设计新用户的书写格式,其中提交方式为post请求方式,将请求匹配到特定路由Route中
<form name="myform" method="post" action="/login" onsubmit="">
{{Form::token()}}
<div class="dl_one"><label>用户名:</label><input type="text" name="username" value=""></div>
<div class="dl_two"><label>密 码:</label><input type="password" name="password" value=""></div>
<div class="dl_btn">
<input type="hidden" name="cookietime" value="0">
<input type="hidden" name="forward" value="?">
<input name="dosubmit" type="submit" value="登录" class="btn_p">
<input type="reset" name="reset" class="btn_p" value="重置">
</div>
</form>
5.跳转路由地址栏wenjuan2021/login 到routes.php中,映射到特定UserController.php中,控制器处理请求
Route::post('/login','UserController@dologin');//基础路由
6.控制器UserController.php获取提交请求,提交成功返回到后台首页,提交失败返回到用户登录界面
public function dologin(){
$username=Input::get('username');
$password=Input::get('password');
if(Auth::attempt(array('username'=>$username,'password'=>$password))){
return Redirect::to('/adm');
} //用户登录使用了Auth::attempt()方法 用户认证为true,用户成功登录
else{
return Redirect::to('/login'); //用户认证为false,用户登录失败
}
注意:在调用attempt方法时,auth.attempt事件将会触发。如果验证成功以及用户登录了,auth.login事件也会触发
2.后台首页
2.跳转路由地址栏wenjuan2021/adm 到routes.php中,映射到特定SurveyController.php中,控制器处理请求
Route::get('/adm','SurveyController@adminindex');
3.控制器SurveyController.php获取请求,返回到视图adminindex.blade.php中
public function adminindex(){
return View::make('adminindex');
}
4.视图adminindex.blade.php中设计后台首页的书写格式(整体布局视图在layout.blade.php里边)获取数据
1.满意度调查饼图信息
var chart1 = document.getElementById('showcharts'); //获取ID为showchart的值传给变量chart1
var myChart1 = echarts.init(chart1); //变换类型
var chart2 = document.getElementById('showcharts2');
var myChart2 = echarts.init(chart2); //变化类型
var option1,option2;
option1 = {
title: {
text: '满意度调查',
left: 'center'
},
tooltip: { //饼图上的数据
trigger: 'item'
},
legend: { //图例
orient: 'vertical',
left: 'left',
},
series: [
{
name: '问卷汇总', //获取的showchart的信息
type: 'pie',
radius: '50%',
data: [
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
myChart1.setOption(option1); //显示获取信息的数据
2.建议意见饼图信息
option2 = {
title: { //标题"建议意见"
text: '建议意见',
left: 'center'
},
tooltip: {
trigger: 'item'
},
legend: { //图例
orient: 'vertical',
left: 'left',
},
series: [
{
name: '问卷汇总', //鼠标靠近饼图显示问卷汇总
type: 'pie', //饼图
radius: '50%',
data: [
//发送服务器的数据
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
myChart2.setOption(option2); //显示获取信息的数据
$.ajax({
type:'get', //请求方式为get类型
url:'/adm/show-chart', //发送请求地址
dataType:'json', //返回json数据
success:function(result){ //请求成功后的回调函数,函数的数据由index.blade.php进行处理后的数据
myChart1.setOption({
series:{
data:[ //发送服务器的数据
{value: result['q11'], name: '满意'},
{value: result['q12'], name: '不满意'}
]
}
})
myChart2.setOption({
series:{
data:[
{value: result['q21'], name: '检索结果不够精确准确'},
{value: result['q22'], name: '检索结果不全面'},
{value: result['q23'], name: '反馈时间超出规定天数'},
{value: result['q24'], name: '流程繁琐'},
{value: result['q25'], name: '服务态度不佳'},
]
}
})
},
error:function(errorMsg){
alert('图表请求失败');
myChart1.hideLoading();
}
});
5.views/adminindex.blade.php 视图中,将请求匹配到特定路由Route中
series: [
{
name: '问卷汇总',
type: 'pie',
radius: '50%',
data: [
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
6.跳转路由地址栏wenjuan2021/adm/ 到routes.php中,映射到特定SurveyController.php中,控制器处理请求
Route::get('/adm/show-chart','SurveyController@showchart');
7.控制器SurveyController.php获取请求,整理检索结果数据
public function showchart(){
error_reporting(E_ALL ^ E_NOTICE);
$q1s = DB::table('records')->lists('q1'); //获取数据库records中列表中q1的个数
$q21s = DB::table('records')->lists('q21');
$q22s = DB::table('records')->lists('q22');
$q23s = DB::table('records')->lists('q23');
$q24s = DB::table('records')->lists('q24');
$q25s = DB::table('records')->lists('q25');
$agree=0;
$disagree=0;
$q21=0;
$q22=0;
$q23=0;
$q24=0;
$q25=0;
for ($i=0;$i<count($q1s);$i++) {
if ($q1s[$i]== 1) {
$agree += 1;
} else if ($q1s[$i] == 0) {
$disagree += 1;
}
}
for ($i=0;$i<count($q21s);$i++) {
if ($q21s[$i] == 1) {
$q21 += 1;
}
}
for ($i=0;$i<count($q22s);$i++) {
if ($q22s[$i] == 1) {
$q22 += 1;
}
}
for ($i=0;$i<count($q23s);$i++) {
if ($q23s[$i] == 1) {
$q23 += 1;
}
}
for ($i=0;$i<count($q22s);$i++) {
if ($q24s[$i]== 1) {
$q24 += 1;
}
}
for ($i=0;$i<count($q25s);$i++) {
if ($q25s[$i] == 1) {
$q25 += 1;
}
}
3.用户User管理中添加管理员(后台)
1.views/user/list.blade.php 视图中,将请求匹配到特定路由Route中
@section('content')
<h2>用户列表页</h2>
<div class="a_link"><a href="/adm/user/add-user">添加管理员</a></div>
<div class="table_style">
<table border="1" width="100%" cellspacing="0" cellpadding="0">
<tbody><tr>
<td width="5%">id</td>
<td width="14%">username</td>
<td width="14%">email</td>
<td width="10%">更新时间</td>
<td width="10%">管理</td>
</tr>
2.跳转路由地址栏wenjuan2021/adm/user/add-user 到routes.php中,映射到特定UserController.php中,控制器处理请求
Route::controller('/adm/user','UserController');//控制器路由,默认访问getIndex方法
3.控制器UserController.php获取请求,返回到视图adduser.blade.php中
getIndex()方法中问卷记录提交时间、倒序排列、并且每页只有5条数据,视图list.blade.php获取问卷数据
public function getIndex(){
$surveys=Survey::orderBy('created_at','desc')->paginate(5);
return View::make('survey.list')->with('surveys',$surveys);
}
public function getAddUser(){
// return "用户添加页面";
return View::make('user.adduser');
}
4.视图adduser.blade.php中设计添加新用户的书写格式,其中提交方式为post请求方式,返回控制器UserController.php中
<form method="post" action="/adm/user/add-user">
<input type="hidden" name="_token" value="{{csrf_token()}}">
<div class="input_dl">
5.控制器UserController.php获取post请求
1.定义postAddUser方法,进行表单验证,先使$data获取用户待验证的数据,$rules 获取数据库属性规则,生成一条表数据,如果添加成功直接返回添加新用户界面,添加失败也返回添加新用户界面,并附带报错信息
public function postAddUser(){
$data=Input::all(); //获取用户待验证的数据(表单验证$data参数)
$rules=array(
'username'=>'required',
'email'=>'required|email|unique:users', //该数据需要应用的验证规则(表单验证$rules参数)
'password'=>'required|min:6|confirmed'
);
$validator=Validator::make($data,$rules); //表单验证(例如验证密码不能重复,密码不能少于6位)
if ($validator->fails()){
$errors= $validator->messages(); //如果验证失败,可以从验证器中获取错误信息
return Redirect::to('/adm/user/add-user')->with('errors',$errors);
}
2.获取界面输入的内容将值传给变量$name,数据库user表中username属性获取变量$name的数据,其余类似
$name=Input::get('username');
$email=Input::get('email');
$password=Input::get('password');
$user=new User();
$user->username=$name;
$user->email=$email;
$user->password=Hash::make($password);
$user->save();
return Redirect::to('/adm/user');
}
4.用户User管理中修改密码(后台)
1.views/user/list.blade.php 视图中,将请求匹配到特定路由Route中
@foreach($users as $v)
<tr>
<td width="5%"><a href="/adm/user/add-user">{{$v->id}}</a></td>
<td width="14%">{{$v->username}}</td>
<td width="14%">{{$v->email}}</td>
<td width="14%">{{$v->created_at}}</td>
<td width="4%"><a href="/adm/user/edit-user/{{$v->id}}">修改密码</a></td>
</tr>
@endforeach
2.跳转路由地址栏wenjuan2021/adm/user/add-user 到routes.php中,映射到特定UserController.php中,控制器处理请求
Route::controller('/adm/user','UserController');//控制器路由,默认访问getIndex方法
3.控制器UserController.php获取请求,返回到视图edituser.blade.php中
getIndex()方法中问卷记录提交时间、倒序排列、并且每页只有5条数据,视图list.blade.php获取问卷数据
public function getIndex(){
$surveys=Survey::orderBy('created_at','desc')->paginate(5);
return View::make('survey.list')->with('surveys',$surveys);//
}
public function getEditUser($id){
$user=User::find($id);
return View::make('user.edituser')->with('user',$user);
}
4.视图edituser.blade.php中设计修改密码的书写格式,其中提交方式为post请求方式,返回控制器UserController.php中
<form method="post" action="/adm/user/edit-user/{{$user->id}}">
<input type="hidden" name="_token" value="{{csrf_token()}}">
<div class="input_dl">
5.控制器UserController.php获取post请求
1.定义postEditUser方法,进行表单验证,先使$data获取用户新输入数据,$rules 获取数据库应用的属性规则,生成一条表单数据,如果修改成功直接返回修改密码界面,添加失败也返回修改密码界面,并附带报错信息
public function postEditUser($id){
$data=Input::all(); //获取用户待验证的数据(表单验证$data参数)
$rules=array(
'username'=>'required',
'email'=>'required|email', //该数据需要应用的验证规则(表单验证$rules参数)
'password'=>'required|min:6|confirmed'
);
$validator=Validator::make($data,$rules);//表单验证(例如验证密码不能重复,密码不能少于6位)
if ($validator->fails()){
$errors= $validator->messages(); //如果验证失败,可以从验证器中获取错误信息
return Redirect::to('/adm/user/edit-user/'.$id)->with('errors',$errors);
}
2.获取界面输入的内容将值传给变量$password,数据库user表中upassword属性获取变量$password的数据,并进行哈希加密,其余类似
$password=Input::get('password');
$user=User::find($id);
$user->password=Hash::make($password);
$user->save();
return Redirect::to('/adm/user');
}
}
5.问卷Survey列表中答卷列表获取数据(后台)
1.views/survey/list.blade.php 视图中,将请求(获取问卷信息)匹配到特定路由Route中
@foreach($surveys as $v)
<tr>
<td width="5%"><a href="/adm/survey">{{$v->id}}</a></td>
</tr>
@endforeach
2.跳转路由地址栏wenjuan2021/adm/survey 到routes.php中,映射到特定SurveyController.php中,控制器处理请求
Route::controller('/adm/survey','SurveyController');//默认访问getIndex方法
3.控制器SurveyController.php获取请求,返回到视图list.blade.php中
getIndex()方法中问卷记录提交时间、倒序排列、并且每页只有5条数据,视图list.blade.php获取问卷数据
public function getIndex(){
$surveys=Survey::orderBy('created_at','desc')->paginate(5);
return View::make('survey.list')->with('surveys',$surveys);
}
views/list.balde.php文件分页形式
{{$surveys->links()}}
wenjuan2021/php/vendor/laravel/farmework/src/Illuminate/Pagination/views/slider-3.php
<?php $presenter = new IlluminatePaginationBootstrapPresenter($paginator);
?>
<?php if($paginator->getLastPage() > 1):?>
<div class="paging">总数:<b><?php echo $paginator->getTotal()?></b>
<?php echo $presenter->render();?> //进行数据传送
<div class="clear"></div>
</div>
<?php endif; ?>
<td width="14%">{{$v->email}}</td>
<td width="14%">{{$v->ip}}</td>
<td style="color: green;font-weight: bold" align="center" width="10%">@if($v->q1==1)√@endif</td>
<td style="color: green;font-weight: bold" align="center" width="10%">@if($v->q21==1)√@endif</td>
<td style="color: green;font-weight: bold" align="center" width="10%">@if($v->q22==1)√@endif</td>
<td style="color: green;font-weight: bold" align="center" width="10%">@if($v->q23==1)√@endif</td>
<td style="color: green;font-weight: bold" align="center" width="10%">@if($v->q24==1)√@endif</td>
<td style="color: green;font-weight: bold" align="center" width="10%">@if($v->q25==1)√@endif</td>
<td width="15%">{{$v->created_at}}</td>
6.后台注销
1.views/layout/layout.blade.php 视图中,将请求(用户注销)匹配到特定路由Route中
<li class="li_style"><a href="/adm">首页</a></li>
<li class="li_style"><a href="/adm/survey">问卷列表</a></li>
<li class="li_style"><a href="/adm/user">用户管理</a></li>
<li class="li_style"><a href="/logout">注销</a></li>
2.跳转路由地址栏wenjuan2021/logout 到routes.php中,映射到特定UserController.php中,控制器处理请求
Route::get('/logout','UserController@logout');
3.控制器UserController.php获取注销请求,返回到视图login.blade.php中
public function logout(){
Auth::logout(); //注销用户登录状态
return Redirect::to('/login');
}
7.满意度调查问卷Index填写(前台)
1.views/index.blade.php 视图中,将请求(获取邮箱信息)匹配到特定路由Route中
<div class="email">
<label>您的邮箱是</label>
<input type="text" name="email" id="email" value="{{$email}}"/>
</div>
2.跳转路由地址栏wenjuan2021/ 到routes.php中,映射到特定SurveyController.php中,控制器处理请求
Route::get('/{email?}', 'SurveyController@survey');
3.控制器SurveyController.php获取请求,返回到视图index.blade.php中
public function survey($email=""){
return View::make('index')->with('email',$email);
}
4.视图index.blade.php中显示问卷界面需要书写信息
<div class="ques_one">
<p>问题1: 您对文献检索的结果是否满意?</p>
<p>
<input type="radio" name="q1" id="q11" value="1" /><span>满意</span>
<input type="radio" name="q1" id="q12" value="0" /><span>不满意</span>
</p>
</div>
<div class="ques_one" id="q2" style="display: none">
<p>问题2: 若不满意,请问我们应该在哪些方面改进?</p>
<p>
<input type="checkbox" name="q21" id="q21" value="1" />检索结果不够精准
</p>
<p>
<input type="checkbox" name="q22" id="q22" value="2" />检索结果不全面
</p>
<p>
<input type="checkbox" name="q23" id="q23" value="3" />反馈时间超出规定天数
</p>
<p>
<input type="checkbox" name="q24" id="q24" value="4" />流程繁琐
</p>
<p>
<input type="checkbox" name="q25" id="q25" value="5" />服务态度不佳
</p>
</div>
8.满意度调查问卷Index提交(前台)
1.views/index.blade.php 视图中,将请求(获取提交信息)匹配到特定路由Route中
<div class="submit_btn">
<input type="submit" id="btn_submit" class="btn" value="提交" /><br><br>
<a href="/login">后台</a>
2.跳转路由地址栏wenjuan2021/ 到routes.php中,映射到特定SurveyController.php中,控制器处理请求,找到submitsurvey方法
Route::post('/','SurveyController@submitsurvey');
3.控制器SurveyController.php获取请求
1.定义submitsurvey方法,如果提交成功直接返回满意度调查问卷界面,提交失败也返回满意度调查问卷界面,并附带报错信息
public function submitsurvey(){
$datas=Input::all(); //获取用户待验证的数据(表单验证$data参数)
$rules=array(
'email'=>'required|email|unique:records' //该数据需要应用的验证规则(表单验证$rules参数)
);
$validtor=Validator::make($datas,$rules); //表单验证(例如验证密码不能重复,密码不能少于6位)
if($validtor->fails()){
$msg=$validtor->messages()->first('email');
return json_encode(array('success'=>false,'msg'=>$msg));
}
2.数据库获取新输入的表单信息email、ip、问卷检索信息
$survey=new Survey();
$survey->email=$datas['email'];
$survey->ip=$_SERVER['REMOTE_ADDR'];
$survey->q1=$datas['q1'];
if ($survey->q1==0){
$survey->q21=$datas['q21'];
$survey->q22=$datas['q22'];
$survey->q23=$datas['q23'];
$survey->q24=$datas['q24'];
$survey->q25=$datas['q25'];
}
$survey->save();
return json_encode(array('success'=>true,'msg'=>"成功提交,感谢您的参与"));
}