laravel(四)

laravel(四)

视图(页面布局)

页面布局: 指提取网站视图公共部分,其他视图文件继承或引入

好处: 减少冗余

common.png

语法:

@yield('标识')                父(公共区域)定义内容片段,子填充
@extends('标识')          子继承父(公共区域)
@section('标识', '默认值')   子填充父(公共区域)文字
@section('标识')              子填充父(公共区域)HTML代码
存放子页面内容
@endsection
@include('视图标识', ['key' => 'value变量值']) 调取公共页面(一般多个子页面提取)

创建common页面

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>laravel</title>
    <!-- Bootstrap CSS 文件 -->
    <link rel="stylesheet" href="{{ asset('admin/static') }}/bootstrap/css/bootstrap.min.css">

    <link rel="stylesheet" href="{{ asset('admin/static') }}/bootstrap/css/form.css">
</head>
<body>

<div class="navbar navbar-default">
    <div class="container">
        <div class="navbar-header">
            <a href="/" class="navbar-brand">首页</a>
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#menu" aria-expanded="false">
                <span class="sr-only">菜单折叠</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>

        </div>
        <div class="collapse navbar-collapse" id="menu">
            <ul class="nav navbar-nav">
                <li class="active"><a href="/">开发</a></li>
                <li><a href="#">列表</a></li>
                <li><a href="#">头条</a></li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">资讯 <span class="caret"></span></a>
                    <ul class="dropdown-menu">
                        <li><a href="#">学习一</a></li>
                        <li><a href="#">学习二</a></li>
                        <li class="divider"></li>
                        <li><a href="#">技术学习</a></li>
                        <li class="divider"></li>
                        <li><a href="#">jq学习</a></li>
                    </ul>
                </li>
            </ul>
            <form class="navbar-form navbar-left">
                <div class="form-group">
                    <input type="text" class="form-control" placeholder="Search...">
                </div>
                <button type="submit" class="btn btn-default">搜索</button>
            </form>
            <ul class="nav navbar-nav navbar-right">
                @if(!session('userinfo'))
                <li><a href="{{ url('student/login')  }}">登录</a></li>
                <li><a href="javascript:void();">注册</a></li>
                @else
                    <li><a href="javascript:void();">欢迎 {{ Session::get('userinfo','管理员')  }}</a></li>
                    <li><a href="{{ url('student/logout')  }}">退出</a></li>
                @endif
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">相关<span class="caret"></span></a>
                    <ul class="dropdown-menu">
                        <li><a href="#">系列一</a></li>
                        <li class="divider"></li>
                        <li><a href="#">系列二</a></li>
                    </ul>
                </li>
            </ul>
        </div>
    </div>
</div>

@yield('body')

<!-- 尾部 -->
<div class="jumbotron" style="margin:0;">
    <div class="container">
        <span>  @2017 laravel</span>
    </div>
</div>

<!-- jQuery 文件 -->
<script src="{{ asset('admin/static') }}/jquery/jquery.min.js"></script>
<!-- Bootstrap JavaScript 文件 -->
<script src="{{ asset('admin/static') }}/bootstrap/js/bootstrap.min.js"></script>

</body>
<link rel="stylesheet" type="text/css" href="{{ asset('css') }}/sweetalert.min.css">
<script type="text/javascript" src="{{ asset('js') }}/sweetalert.min.js"></script>
<script type="text/javascript">
    @if (Session::has('tips'))
    swal("{{Session::get('tips')}}", "系统提示","{{Session::get('state')}}")
    @endif
</script>
</html>



add页面

@extends('admin.student.common')

@section('body')
    <!-- 头部 -->
    <div class="jumbotron jump">
        <div class="container">
            <h2>玩转laravel</h2>

            <p> 玩转- laravel</p>
        </div>
    </div>

    <!-- 中间内容区局 -->
    <div class="container">
        <div class="row">

            <!-- 左侧菜单区域   -->
            <div class="col-md-3">
                <div class="list-group">
                    <a href="{{ url('student/index')  }}" class="list-group-item ">学生列表</a>
                    <a href="javascript:void(0);" class="list-group-item active">新增学生</a>
                </div>
            </div>

            <!-- 右侧内容区域 -->
            <div class="col-md-9">

                <!-- 所有的错误提示 -->
                <div class="alert alert-danger">
                    @if (count($errors) > 0)
                        <div class="alert alert-danger">
                            <ul>
                                @foreach ($errors->all() as $error)
                                    <li>{{ $error }}</li>
                                @endforeach
                            </ul>
                        </div>
                    @endif

                </div>

                <!-- 自定义内容区域 -->
                <div class="panel panel-default">
                    <div class="panel-heading">新增学生</div>
                    <div class="panel-body">
                        <form class="form-horizontal" action="{{ url('student/add')  }}" method="post">
                            <div class="form-group">
                                <label for="name" class="col-sm-2 control-label">姓名</label>

                                <div class="col-sm-5">
                                    <input type="text" class="form-control" name="uname" id="name" placeholder="请输入学生姓名">
                                </div>
                                <div class="col-sm-5">
                                    <p class="form-control-static text-danger">{{ $errors->first('uname') }}</p>
                                </div>
                            </div>
                            <div class="form-group">
                                <label for="age" class="col-sm-2 control-label">密码</label>

                                <div class="col-sm-5">
                                    <input type="text" class="form-control" name="pwd" id="age" placeholder="请输入密码">
                                </div>
                                <div class="col-sm-5">
                                    <p class="form-control-static text-danger">{{ $errors->first('pwd') }}</p>
                                </div>
                            </div>
                            <div class="form-group">
                                <label for="age" class="col-sm-2 control-label">年龄</label>

                                <div class="col-sm-5">
                                    <input type="text" class="form-control" id="age" name="age" placeholder="请输入学生年龄">
                                </div>
                                <div class="col-sm-5">
                                    <p class="form-control-static text-danger">{{ $errors->first('age') }}</p>
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-sm-2 control-label">性别</label>

                                <div class="col-sm-5">
                                    <label class="radio-inline">
                                        <input type="radio" name="sex" value="1"  > 男
                                    </label>
                                    <label class="radio-inline">
                                        <input type="radio" name="sex" value="2" checked="checked"> 女
                                    </label>
                                </div>
                                <div class="col-sm-5">
                                    <p class="form-control-static text-danger"></p>
                                </div>
                            </div>
                            <div class="form-group">
                                <div class="col-sm-offset-2 col-sm-10">
                                    <button type="submit" class="btn btn-primary">提交</button>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>

            </div>
        </div>
    </div>

@endsection

index 页面..等.

@extends('admin.student.common')

@section('body')

<div class="jumbotron jump">
    <div class="container">
        <h2>玩转laravel-之首页</h2>

        <p> 玩转- laravel</p>
    </div>
</div>

<!-- 中间内容区局 -->
<div class="container">
    <div class="row">

        <!-- 左侧菜单区域   -->
        <div class="col-md-3">
            <div class="list-group">
                <a href="{{ url('student/index')  }}" class="list-group-item active">学生列表</a>
                <a href="{{ url('student/add')  }}" class="list-group-item">新增学生</a>
            </div>
        </div>

        <!-- 右侧内容区域 -->
        <div class="col-md-9">

            <!-- 成功提示框 -->
            <div class="alert alert-success alert-dismissible" role="alert">
                <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
                <strong>成功!</strong> 操作成功提示!
            </div>

            <!-- 失败提示框 -->
            <div class="alert alert-danger alert-dismissible" role="alert">
                <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
                <strong>失败!</strong> 操作失败提示!
            </div>

            <!-- 自定义内容区域 -->
            <div class="panel panel-default">
                <div class="panel-heading">学生列表</div>
                <table class="table table-striped table-hover table-responsive">
                    <thead>
                    <tr>
                        <th>ID</th>
                        <th>姓名</th>
                        <th>年龄</th>
                        <th>性别</th>
                        <th>添加时间</th>
                        <th width="120">操作</th>
                    </tr>
                    </thead>
                    <tbody>

                    @foreach($students as $student)
                        <tr>
                            <th scope="row">{{ $student->id }}</th>
                            <td>{{ $student->uname }}</td>
                            <td>{{ $student->age }}</td>
                            <td>
                                @if($student->sex  == 1)
                                    男
                                @else
                                    女
                                @endif
                            </td>
                            <td>{{ $student->created_at }}</td>
                            <td>
                                <a href="">详情</a>
                                <a href="{{  url("student/upd?id=$student->id ") }}">修改</a>
                                <a href="{{  url("student/del?id=$student->id ") }}" onclick="return confirm('确定要删除吗?')">删除</a>
                            </td>
                        </tr>
                    @endforeach

                    </tbody>
                </table>
            </div>

            <!-- 分页  -->
            <div>
                {{ $students->links() }}
            </div>

        </div>
    </div>
</div>

@endsection

会话技术

session会话

定义路由

Route::get('/day4/t1', 'Admin\Day4Controller@t1');
Route::get('/day4/t2', 'Admin\Day4Controller@t2');

创建控制器方法

语法:

位置:app\config\session.php文件

脚下留心:Laravel重写了session机制

在config\session.php 中 将expire)on_close改为true // 浏览器关闭清空session

HTTP Request 的session方法

设置:            Session::put(键,值);
获取指定:          Session::get(键 [,默认值])
获取所有:          Session::all()
判断:            Session::has(key)

删除指定:          Session::forget(key) 
删除所有:      Session::flush() 
压入session数组:Session::push(key, value)
获取后删除:     Session::pull(key) 
闪存:            Session::flash(key, value)  
辅助函数
设置:session([键1=>值1,...,键n=>值n])
获取:session(键)

练习

#设置session(需求:uname=itcast,age=18,stu=[uname=xiaoze,age=18])
#获取指定uname和age
#删除age指定
#获取全部
public function t1()
{
    #设置session(需求:uname=itcast,age=18,stu=[uname=xiaoze,age=18])
    Session::put('uname', 'itcast');
    Session::put('age', '18');
    Session::put('stu', ['uname'=>'xiaoze', 'age'=>18]);
     #获取指定uname和age
    echo Session::get('uname');
    echo Session::get('age');
    #删除age指定
    Session::forget('age');
    #获取全部
    dd(Session::all());
}

Cookie会话

设置:Cookie::make(键,值)

获取:Cookie::get(键)

$data = Cookie::make('username','itcast')
return redirect(url('/day4/t2))->withCookie($data);
echo Cookoe::get('username')

中间件

中间件:就是HTTP请求交给控制器方法前的过滤层

将HTTP请求交给控制器方法前先交给另一个方法处理

语法:

语法:php artisan make:middleware 中间件名称

位置:app\Http\Middleware

步骤1:创建中间件

步骤2:激活中间件(app\Http\Kernel.php)

步骤3:使用修改路由声明哪些路由需要通过中间件过滤

创建中间件

php artisan make:middleware CheckTest

激活中间件 http\kemel.php中

protected $routeMiddleware = [

    //新增

    'CheckTest' => \app\http\middleware\CheckTest::class 

];


laravel控制器数据验证

JS验证表单数据:1-提高用户体验度,2-减少不必要的http请求

PHP数据验证:增强安全性

控制器直接使用validate方法

$this->validate($request,验证规则 [,自定义提示信息])

单独创建验证类

语法:php artisan make:request 验证类名称   (注:Check模型名  大驼峰)
位置:app\Http\Requests目录

视同validator门面验证

$validator = Validator::make(数组,验证规则 [,自定义提示信息])
$validator->passes()            判断是否成功:true-成功没有问题,false-失败有问题
$validator->fails()             判断是否失败:true-失败有问题,false-成功没问题
$validator->messages()           获取错误信息

验证规则

required: 不能为空
max:255最长255个字符,
min:1最少1个字符
email:验证邮箱是否合法
confirmed:验证两个字段是否相同,如果验证的字段是password,则必须输入一个与之匹配的password_confirmation字段
integer:验证字段必须是整型
ip:验证字段必须是IP地址
numeric 验证字段必须是数值
max:value 验证字段必须小于等于最大值,和字符串,数值,文件字段的size规则一起使用。
min:value 验证字段的最小值,对字符串、数值、文件字段而言,和size规则使用方式一致。
size:value 验证字段必须有和给定值value想匹配的尺寸,对字符串而言,value是相应的字符数目,对数值而言,value是给定整型值;对文件而言,value是相应的文件字节数。
string 验证字段必须是字符串
unique:表名,字段,需要排除的ID

规则手册:http://laravelacademy.org/post/6768.html#toc_17 
&多学一招:多个验证规则可以通过 "|" 字符进行隔开
直接使用validate方法
#数据过滤
#语法:$this->validate($request,验证规则 [,提示信息])
$this->validate($request, [
    'uname' => 'required|min:3|max:8',
    'pwd' =>  'required|min:6|max:30',
    'age' => 'required|integer|between:1,100',
    'sex' => 'required|integer|between:1,2',
], [
    'uname.required' => '用户名必须',
    'uname.min' => '用户名至少3个字符',
]);

输出视图

@if (count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

汉化提示信息

&汉化提示信息
1)下载:https://github.com/caouecs/Laravel-lang 
2)将src\zh-CN移动到resources\lang\中并更名为zh_CN
修改config\app.php文件

将改成'locale' => 'zh_CN',
删除自定义提示查看效果
单独创建验证类
创建验证类: php artisan make:request CheckStudent
#输入内容:
<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class CheckStudent extends FormRequest
{
    public function authorize()
    {
        //是否开启验证:true-是,false-头
        return true;
    }
    
    public function rules()
    {
        if ($this->isMethod('get')) return [];
        return [
            'uname' => 'required|min:3|max:8',
            'pwd' =>  'required|min:6|max:30',
            'age' => 'required|integer|between:1,100',
            'sex' => 'required|integer|between:1,2',
        ];
    }
    
    public function messages()
    {
        return [
            'uname.required' => '用户名必须',
            'uname.min' => '用户名至少3个字符',
        ];
    }
}

控制器调用

public function add(\App\Http\Requests\CheckStudent $request){
    xxx
}
使用validator门面控制器
直接在控制器里进行验证
#数据过滤
$validator = Validator::make($postData, [
    'uname' => 'required|min:3|max:8',
    'pwd' =>  'required|min:6|max:30',
    'age' => 'required|integer|between:1,100',
    'sex' => 'required|integer|between:1,2',
]);
//会否验证失败:true-验证失败,false-验证成功
if ($validator->fails()) {
    //获取错误信息
    //dd($validator->messages());
    return redirect(url('/student/add'))->withErrors($validator);
}

显示单个错误

语法:{{ $errors->first(name属性值) }}

多表查询

安装Laravel开发调试工具(注:同TP默认的Trace调试工具)

文档:http://laravelacademy.org/post/2774.html

composer require barryvdh/laravel-debugbar

在config\app.php 注册激活

'providers' => [
    Barryvdh\Debugbar\ServiceProvider::class,
]

连表查询语法:

DB::table(表1)/ 模型名
leftJoin(表2,‘表1.公共字段’,‘=’,‘表2.公共字段’)
->get();
查询构建器

定义路由..

创建控制器方法

#练习(一对一关系:一篇文章属于一个用户)
$articles = DB::table('article')->leftJoin('stu', 'article.uid', '=', 'stu.id')->get();
foreach ($articles as $article)
{
    echo '文章ID:'.$article->aid.',文章标题:'.$article->title.'<br />';
    echo '用户ID:'.$article->id.',用户昵称:'.$article->uname.'<hr />';
}
#练习(一对多关系:一个用户拥有多篇文章)
$stus = DB::table('stu')->leftJoin('article', 'stu.id', '=', 'article.uid')->get();
foreach ($stus as $stu)
{
    echo '用户ID:'.$stu->id.',用户昵称:'.$stu->uname.'<br />';
    echo '文章ID:'.$stu->aid.',文章标题:'.$stu->title.'<hr />';
}
模型

创建模型

php artisan make:model Http\Models\Article
php artisan make:model Http\Models\Stu

模型对应表

<?php

namespace App\Http\Models;

use Illuminate\Database\Eloquent\Model;

class Stu extends Model
{
    /**
     * 声明表名
     *
     * @var        string
     */
    protected $table = 'stu';
}

<?php

namespace App\Http\Models;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    /**
     * 声明表名
     *
     * @var        string
     */
    protected $table = 'article';
}

练习

#练习(一对一关系:一篇文章属于一个用户)
$articles = Article::leftJoin('stu', 'article.uid', '=', 'stu.id')->get();
foreach ($articles as $article)
{
    echo '文章ID:'.$article->aid.',文章标题:'.$article->title.'<br />';
    echo '用户ID:'.$article->id.',用户昵称:'.$article->uname.'<hr />';
}
#练习(一对多关系:一个用户拥有多篇文章)
$stus = Stu::leftJoin('article', 'stu.id', '=', 'article.uid')->get();
foreach ($stus as $stu)
{
    echo '用户ID:'.$stu->id.',用户昵称:'.$stu->uname.'<br />';
    echo '文章ID:'.$stu->aid.',文章标题:'.$stu->title.'<hr />';
}
关联模型

一对一

步骤1:定义模型
public function  推荐表名 () 
{
return $this->hasOne(关联模型命名空间,关联模型公共字段,本模型公共字段);
}

步骤2:模型名::with(推荐表名)->get()
步骤3:
foreach($模型名s as $模型名) {
     获取当前模型对应的表数据 $模型名->字段名
     获取当前模型关联表数据   $模型名->with处名称->关联模型字段名;
}

一对多

步骤1:定义模型
public function  推荐表名s () 
{
return $this->hasMany(关联模型命名空间,关联模型公共字段,本模型公共字段);
}

步骤2:模型名::with(推荐表名s)->get()
步骤3:
foreach($模型名s as $模型名) {
     获取当前模型对应的表数据 $模型名->字段名
     获取当前模型关联表数据  (脚下留心:多条数据)
foreach($模型名->with处名称 as $关联表名) {
    $关联表名->关联表字段
}
}

Stu表

<?php

namespace App\Http\Models;

use Illuminate\Database\Eloquent\Model;

class Stu extends Model
{
    protected $table = 'stu';

    public function articles()
    {
        return $this->hasMany('\App\Http\Models\Article','uid','id');
    }
}

Stundent

<?php

namespace App\Http\Models;

use Illuminate\Database\Eloquent\Model;

class Student extends Model
{
    /**
     * 设置表名
     * @var string
     */
    protected $table = 'student';

    /**
     * 声明可以批量设置的属性
     * @var array
     */
    protected $fillable   =  ['uname', 'pwd', 'age', 'sex'];

    /**
     * Unix时间戳填充数据(注:默认托管创建于更新于)
     * @var string
     */
    protected $dateFormat = 'U';
}

练习

#关联模型语法,模型名::with(推荐表名) ->get() 

#练习(一对一关系:一篇文章属于一个用户)
$articles = Article::with('stu')->get();
foreach($articles as $article) {
    echo '文章ID:'.$article->aid.',文章标题:'.$article->title.'<br />';
    #说明:with语法获取关联数据
    #语法:$小对象->with处的名->关联模型数据库字段名
    echo '用户ID:'.$article->stu->id.',用户昵称:'.$article->stu->uname.'<hr />';
}
#练习(一对多关系:一个用户拥有多篇文章)
$stus = Stu::with('articles')->get();
foreach($stus as $stu) {
    echo '用户ID:'.$stu->id.',用户昵称:'.$stu->uname.'<br />';
    #说明:with语法获取关联数据
    #语法:$小对象->with处的名称   是一个大对象  里面有多条数据(多个小对象)
    foreach ($stu->articles as $article) {
        echo '文章ID:'.$article->aid.',文章标题:'.$article->title.'<br />';
    }
    echo '<hr />';
}

路由

理解RESTful

RESTful 是目前最流行的一种互联网软件架构(思想)

RESTful表.png
tp5.png

创建资源控制器路由:Route::resource(URL信息,控制器);

Route::resource('/order','Admin/OrderController')

创建资源控制器:php artisan make:controller 平台名\控制器名Controller --resource

php artisan make:controller Admin\OrderController --resource

缓存/配置文件/文件存储-上传

缓存

手册: http://laravelacademy.org/post/6858.html

存储路径:storage\framework\cache

设置:Cache::put(键,值,缓存时间/分钟)

获取:Cache::get(键

//缓存
public function t5()
{
    #需求1:缓存用户信息(user1),id=1,uname=itcast,age=18
    Cache::put('user1', [
        'id' => 1,
        'uname' => 'itcast',
        'age' => 18
    ], 3600);
    #需求2:获取用户信息(user1)
    $data = Cache::get('user1');
    print_r($data);
}

配置文件

手册: http://laravelacademy.org/post/6677.html

语法:config(config目录下的配置文件名称.键)

#需求1:获取app配置文件中时区
echo config('app.timezone') . '<br />';
#需求2:获取缓存存放目录
echo config('cache.stores.file.path');

文件存储-上传

语法:

$request->hasFile(上传框name属性值) 
$request->file(上传框name属性值)->isValid()
$filename = $request->file(上传框name属性值)->store(子路径,存储驱动器名称);
----------------------------------------------
存储驱动器的名称:对应config/filesystems.php文件的声明
子路径:指会在config/filesystems.php文件声明的上传文件夹下再创建一个文件

定义any路由

创建控制器方法

public function t6(Request $request)
{
    #1.判断提交方式
    if ($request->isMethod('post')) {

        #2.检测是否上传文件和是否成功将本地文件上传到服务器
        if ($request->hasFile('image')  && $request->file('image')->isValid()) {
            #语法:相当于move_upload_file
            #$filename = $request->file(上传框name属性值)->store(子路径,存储驱动器名称);
            
            $filename = $request->file('image')->store(date('Y-m-d', time()), 'uploads');
            echo $filename;
        } else {
            die('上传失败');
        }
        
    } else {
        #2.加载视图
        return view('admin.day4.t6');
    }
}

修改config\filesystems.php

在disks数组中新增

'uploads'=>[
    'driver'=>'local', #存储方式: local本地
    'root'=>public_path('uploads')  #存放位置: public/uploads
],

创建表单

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <form action="{{ url('day4/t6') }}" enctype="multipart/form-data" method="post">
        <input type="hidden" name="_token" value="{{ csrf_token() }}">
        <input type="file" name="image" /> <br> 
        <input type="submit" value="上传" /> 
    </form> 
</body>
</html>

其他

PHP use 使用场景(or or and 数据操作)
or or and.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,642评论 18 139
  • Laravel 学习交流 QQ 群:375462817 本文档前言Laravel 文档写的很好,只是新手看起来会有...
    Leonzai阅读 7,847评论 2 12
  • 一. 说明 以下内容大部分引用Laravel China社区的文章 - 分享下团队的开发规范 ——《Laravel...
    knghlp508阅读 7,876评论 0 28
  • 介绍 Laravel 是一款 MVC架构、 目前最流行的 PHP框架。 Laravel的优点在于: 丰富的comp...
    那就远走阅读 7,746评论 3 18
  • Laravel框架一:原理机制篇 Laravel作为在国内国外都颇为流行的PHP框架,风格优雅,其拥有自己的一些特...
    Mr_Z_Heng阅读 3,673评论 0 13