博客列表 >9-14作业:控制器创建\往视图传值\ifelse变量等输出方式

9-14作业:控制器创建\往视图传值\ifelse变量等输出方式

浅浅的无名小卒
浅浅的无名小卒原创
2020年09月15日 17:16:01678浏览

做一个计算年龄的小程序

1.创建控制器及视图

我这里在Controllers目录下手动创建了一个名为Myage的控制器,因为要传参的缘故,使用了Http\Request的类,接着写一个index()的方法,渲染至视图。
创建控制器
在resources\views\路径下创建了一个名为myage.blade.php的文件,里面内容是一个姓名和出生日期的表单,代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>年龄计算</title>
  7. </head>
  8. <body style="width:60%;text-align: center;margin-left: auto;margin-right: auto;background-color: yellowgreen;">
  9. <h1>年龄计算</h1>
  10. <form id='info' action="./compute.cn" method="get">
  11. <div>
  12. <span>姓名:</span>
  13. <input type="text" name= 'name' id= 'name' placeholder='兄弟,怎么称呼?' required>
  14. </div>
  15. <br />
  16. <div>
  17. <span>出生日期:</span>
  18. <input type="date" name= 'born' id='born' placeholder='出生年月' required>
  19. </div>
  20. <br/>
  21. <input type="submit" id='tijiao' value="算一下">
  22. </form>
  23. </body>
  24. </html>

2.写一个路由

Route::get(‘/age.html’,’Myage@index’);
这样,浏览器访问域名/age.html就可以访问Myage控制器的index方法了,并自动渲染到myage视图

效果如下:
视图1

3.再在Myage控制器中写一个方法,我这里写了一个compute方法

这个方法主要任务是接受表单传过来的值,然后经过php一顿操作,得到了一个返回姓名、出生日期、年龄(天数)的data数组,代码如下:

  1. public function compute(Request $request){
  2. date_default_timezone_set('PRC');
  3. $data['name'] = $request->input('name');//称呼
  4. $borndate = $request->input('born') ?date_create($request->input('born')):date_create('1989-1-1') ;//出生年月格式化成date对象
  5. $data['borndate'] =$request->input('born');//原始的出生年月字段
  6. $data['age'] = date_diff($borndate,now())->format("%a");//差值转换成天数
  7. return view('compute',$data);
  8. }

4.然后再写compute.blade.php这个视图文件

这个视图文件主要是用一个弹窗显示当前的年龄值,然后根据出生日期的不同个性化的一些回复。代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>年龄计算</title>
  7. </head>
  8. <body style="width:60%;text-align: center;margin-left: auto;margin-right: auto;background-color: yellowgreen;">
  9. <h1>年龄计算</h1>
  10. <form id='info' action="./compute.cn" method="get">
  11. <div>
  12. <span>姓名:</span>
  13. <input type="text" name= 'name' id= 'name' placeholder='兄弟,怎么称呼?' value= "{{$name}}"required>
  14. </div>
  15. <br />
  16. <div>
  17. <span>出生日期:</span>
  18. <input type="date" name= 'born' id='born' placeholder='出生年月' value= "{{$borndate}}" required>
  19. </div>
  20. <br/>
  21. <input type="submit" id='tijiao' value="算一下">
  22. </form>
  23. <script>
  24. @if($age>365*18)
  25. let year = Math.floor({{$age}}/365);
  26. alert("{{$name}}同志:您今年已经"+year+"岁了");
  27. @elseif($age>365)
  28. let year = Math.floor({{$age}}/365);
  29. alert("{{$name}}小朋友:您今年已经"+year+"岁了");
  30. @elseif($age>30)
  31. let month = Math.floor({{$age}}/30);
  32. alert("{{$name}}宝贝:你已经"+month+"个月了哦");
  33. @else
  34. alert("经鉴定,刚满{{$age}}天!");
  35. @endif
  36. </script>
  37. </body>
  38. </html>

这个视图文件里面用了模板输出,用了if/else的语法,用天数做参数对年龄进行了判断,主要区分18岁、1岁、30天几个特殊段进行了判断,输出不一样的交互内容。

4.再写一个路由

更新routes\web.php文件,添加一行,Route::get('/compute.cn','Myage@compute');

5.测试

  • 小明 1980-09-20

  • 小强 2008-08-08

  • 小红 2019-12-08

  • 小刚 2020-08-18

经测试,功能没有问题。laravel的控制器\视图及路由的简单演示程序-年龄计算完成。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议