zoukankan      html  css  js  c++  java
  • laravel框架学习(二)

      在了解Laravel框架的基本结构之后,初步认识访问过程中路由的使用方法,以一套基本的学生信息增删改查来迅速学习框架开发。

      首先了解几个目录文件作为开发的主要阵地:

        1. /app/Http/routes.php  路由文件,一切访问从路由开始

        2./app/Http/Controllers  控制器目录,我们写的控制器都放在该目录下

        3./app/config       Laravel配置文件夹一般修改.env文件

        4./.env          经常修改配置的文件,数据库配置就在这里

        5./public         Laravel框架项目的入口文件夹,初始访问就是访问该文件夹下的index.php文件

        6./resources/views    Laravel框架视图文件夹,使用blade模板引擎

      然后在/app/Http/Controllers下创建一个学生控制器

        命令:php artisan make:controller StuController --resource

        创建完成后 /app/Http/Controllers/StuCOngtroller.php 

     1 <?php
     2 
     3 namespace AppHttpControllers;
     4 
     5 use IlluminateHttpRequest;
     6 
     7 use AppHttpRequests;
     8 use AppHttpControllersController;
     9 
    10 class StuController extends Controller
    11 {
    12     /**
    13      * Display a listing of the resource.
    14      *
    15      * @return IlluminateHttpResponse
    16      */
    17     public function index()
    18     {
    19        //
    20     }
    21 
    22     /**
    23      * Show the form for creating a new resource.
    24      *
    25      * @return IlluminateHttpResponse
    26      */
    27     public function create()
    28     {
    29         //
    30     }
    31 
    32     /**
    33      * Store a newly created resource in storage.
    34      *
    35      * @param  IlluminateHttpRequest  $request
    36      * @return IlluminateHttpResponse
    37      */
    38     public function store(Request $request)
    39     {
    40         //
    41     }
    42 
    43     /**
    44      * Display the specified resource.
    45      *
    46      * @param  int  $id
    47      * @return IlluminateHttpResponse
    48      */
    49     public function show($id)
    50     {
    51         //
    52     }
    53 
    54     /**
    55      * Show the form for editing the specified resource.
    56      *
    57      * @param  int  $id
    58      * @return IlluminateHttpResponse
    59      */
    60     public function edit($id)
    61     {
    62         //
    63     }
    64 
    65     /**
    66      * Update the specified resource in storage.
    67      *
    68      * @param  IlluminateHttpRequest  $request
    69      * @param  int  $id
    70      * @return IlluminateHttpResponse
    71      */
    72     public function update(Request $request, $id)
    73     {
    74         //
    75     }
    76 
    77     /**
    78      * Remove the specified resource from storage.
    79      *
    80      * @param  int  $id
    81      * @return IlluminateHttpResponse
    82      */
    83     public function destroy($id)
    84     {
    85         //
    86     }
    87 }
    View Code

        在Laravel5.1LTS版本中会自动生成以上6个方法,接下来为该控制器注册一个资源路由

        打开路由文件,插入一句话:Route::resource('stu', 'StuController');

        这个路由声明包含了处理图片资源 RESTful 动作的多个路由,相应地,Artisan 生成的控制器也已经为这些动作设置了对应的处理方法。

    方法     路径     动作     路由名称    
    GET         /stu         index   stu.index
    GET   /stu/create create       stu.create    
    POST /stu store stu.store
    GET   /stu/{$id} show stu.show
    GET /stu/{$id}/edit edit   stu.edit
    PUT/PATCH /stu/{$id} update stu.update
    DELETE /stu/{$id} destroy stu.destroy

      表单提交我们通常使用GET/POST提交,这里需要伪装PUT/DELETE表单提交

      HTML 表单不支持 PUT、PATCH 或者 DELETE 请求方法,因此,当 PUT、PATCH 或 DELETE 路由时,需要添加一个隐藏的 _method 字段到表单中,其值被用作该表单的 HTTP 请求方法:

    1 <form action="/foo/bar" method="POST">
    2     <input type="hidden" name="_method" value="PUT">
    3     <input type="hidden" name="_token" value="{{ csrf_token() }}">
    4 </form>
    View Code

    还可以使用辅助函数 method_field 来实现这一目的:<?php echo method_field('PUT'); ?>

    当然,也支持 Blade 模板引擎:{{ method_field('PUT') }}

    要对数据库进行操作修改.env文件配置数据库

    1 DB_HOST=localhost
    2 DB_DATABASE=lamp
    3 DB_USERNAME=root
    4 DB_PASSWORD=
    View Code

    修改Stu控制器/app/Http/Controllers/StuCOngtroller.php

     1 <?php
     2 
     3 namespace AppHttpControllers;
     4 
     5 use IlluminateHttpRequest;
     6 
     7 use AppHttpRequests;
     8 
     9 class StuController extends Controller
    10 {
    11     public function index()
    12     {
    13         $data = DB::table("stu")->get();
    14         return view("stu.index",['list'=>$data]);
    15     }
    16 
    17     public function create()
    18     {
    19         return view("stu.add");
    20     }
    21 
    22     public function store(Request $request)
    23     {
    24         $data = ['name'=>$request->name,'age'=>$request->age,'sex'=>$request->sex,'classid'=>$request->classid];
    25         $m = DB::table("stu")->insertGetId($data);
    26         if($m>0){
    27             return "添加成功!自增id=".$m."<a href=".url('stu').">返回查看</a>";
    28         }else{
    29             return "添加失败!";
    30         }
    31     }
    32 
    33     public function show($id)
    34     {
    35         echo $id;
    36     }
    37 
    38     public function edit($id)
    39     {
    40         $user = DB::table("stu")->where('id',$id)->first();
    41         //var_dump($user);
    42         return view("stu.edit",['vo'=>$user]);
    43 
    44     }
    45 
    46     public function update(Request $request,$id)
    47     {
    48         DB::table('stu')->where('id',"=",$id)->update(['name'=>$request->name,'age'=>$request->age,'sex'=>$request->sex,'classid'=>$request->classid]);
    49        echo "<a href=".url('stu').">返回查看</a>";
    50     }
    51 
    52     public function destroy($id)
    53     {
    54         //echo "删除".$id;
    55         DB::table("stu")->delete($id);
    56         echo "<a href=".url('stu').">返回查看</a>";
    57     }
    58 }
    View Code

    创建Stu视图/resources/views/stu

    index.blade.php

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <meta charset="utf-8"/>
     5     <title>PHP+MySQLI的学生信息管理</title>
     6     <link type="text/css" rel="stylesheet" href="./bootstrap.min.css"/>
     7     <script type="text/javascript">
     8         function fun(){
     9                 var sub=document.getElementById("sub");
    10 
    11                 //跳转
    12                 //window.location.href={{url('stu')}};
    13             }
    14 
    15 
    16 
    17     </script>
    18 </head>
    19 <body>
    20 <center>
    21     @include("stu.menu")
    22     <h3>浏览学生信息</h3>
    23     <table width="700" border="1">
    24         <tr>
    25             <th>学号</th>
    26             <th>姓名</th>
    27             <th>性别</th>
    28             <th>年龄</th>
    29             <th>班级</th>
    30             <th>操作</th>
    31         </tr>
    32         @foreach($list as $stu)
    33             <tr>
    34                 <td>{{$stu->id}}</td>
    35                 <td>{{$stu->name}}</td>
    36                 <td>{{$stu->sex}}</td>
    37                 <td>{{$stu->age}}</td>
    38                 <td>{{$stu->classid}}</td>
    39                 <td>
    40                     <a href="javascript:void(0)" onclick="doDel({{$stu->id}})">删除</a>
    41                     <a href="{{url("stu")."/".$stu->id."/edit"}}">编辑</a></td>
    42             </tr>
    43         @endforeach
    44     </table>
    45     <form action="" method="POST">
    46         <input type="hidden" name="_method" value="DELETE">
    47         <input type="hidden" name="_token" value="{{ csrf_token() }}">
    48         <input type="hidden" name="pname" value="" id="pname">
    49     </form>
    50     <script>
    51         function doDel(id){
    52             var form =  document.getElementsByTagName("form")[0];
    53             form.action ="{{url('stu')}}"+"/"+id;
    54             form.submit();
    55         }
    56     </script>
    57 
    58 </center>
    59 </body>
    60 </html>
    View Code

    menu.blade.php

    1 <h2>在线学生信息管理</h2>
    2 <a href="{{url('stu')}}">浏览信息</a> |
    3 <a href="{{url('stu/create')}}">添加信息</a>
    4 <hr/>
    View Code

    add.blade.php

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <meta charset="utf-8"/>
     5     <title>PHP+MySQLI的学生信息管理</title>
     6 </head>
     7 <body>
     8 <center>
     9     @include("stu.menu")
    10     <h3>添加学生信息</h3>
    11     <form action="{{url('stu')}}" method="post">
    12         <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
    13         <table width="300" border="0">
    14             <tr>
    15                 <td align="right">姓名:</td>
    16                 <td><input type="text" name="name"/></td>
    17             </tr>
    18             <tr>
    19                 <td align="right">性别:</td>
    20                 <td><input type="radio" name="sex" value="m"/>21                     <input type="radio" name="sex" value="w"/>女</td>
    22             </tr>
    23             <tr>
    24                 <td align="right">年龄:</td>
    25                 <td><input type="text" name="age"/></td>
    26             </tr>
    27             <tr>
    28                 <td align="right">班级:</td>
    29                 <td><input type="text" name="classid"/></td>
    30             </tr>
    31             <tr>
    32                 <td colspan="2" align="center">
    33                     <input type="submit" value="添加"/>
    34                     <input type="reset" value="重置"/>
    35                 </td>
    36             </tr>
    37         </table>
    38     </form>
    39 </center>
    40 </body>
    41 </html>
    View Code

    edit.blade.php

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <meta charset="utf-8"/>
     5     <title>学生信息管理</title>
     6 </head>
     7 <body>
     8 <center>
     9     @include("stu.menu")
    10 
    11     <h3>编辑学生信息</h3>
    12     <form action="{{url('stu')."/".$vo->id}}" method="post">
    13         <input type="hidden" name="_method" value="PUT">
    14         <input type="hidden" name="_token" value="{{ csrf_token() }}">
    15 
    16         <table width="280" border="0">
    17             <tr>
    18                 <td  align="right">姓名:</td>
    19                 <td><input type="text" name="name" value="{{$vo->name}}"/></td>
    20             </tr>
    21             <tr>
    22                 <td align="right">性别:</td>
    23                 <td>
    24                     <input type="radio" name="sex" value="m" {{ $vo->sex=='m' ? "checked" : "" }} />25                     <input type="radio" name="sex" value="w" {{ $vo->sex=='w' ? "checked" : "" }} />26                 </td>
    27             </tr>
    28             <tr>
    29                 <td align="right">年龄:</td>
    30                 <td><input type="text" name="age" value="{{$vo->age}}"/></td>
    31             </tr>
    32             <tr>
    33                 <td align="right">班级:</td>
    34                 <td><input type="text" name="classid" value="{{$vo->classid}}"/></td>
    35             </tr>
    36             <tr>
    37                 <td colspan="2" align="center">
    38                     <input type="submit" value="修改"/>
    39                     <input type="reset" value="重置"/>
    40                 </td>
    41             </tr>
    42         </table>
    43     </form>
    44 </center>
    45 
    46 </body>
    47 </html>
    View Code

        

      

  • 相关阅读:
    程序的编码问题
    man DMIDECODE
    Github熟悉一
    man uname
    第一轮铁大树洞APP开发冲刺(2)
    第九周学习进度
    第九周安卓开发学习总结(3)
    第一轮铁大树洞APP开发冲刺(1)
    第九周安卓开发学习总结(2)
    第九周安卓开发学习总结(1)
  • 原文地址:https://www.cnblogs.com/yexiang520/p/5777756.html
Copyright © 2011-2022 走看看