Laravel的社区生态

中文社区(http://laravel-china.org

5.4中文文档(http://d.laravel-china.org/docs/5.4)

Laravel源码地址(http://github.com/laravel/laravel)

数据填充包(http://github.com/fzaninotto/Faker

与其他框架的优势

1、laravel包含的功能更为丰富:队列,搜索,数据库迁移,定时脚本

2、laravel使用了丰富的第三方包

Laravel的安装

1、  安装环境的要求:PHP>=5.6.4  开启:openssl,PDO,mbstring,tokenizer,xml

2、  安装composer:https://pkg.phpcomposer.com/#how-to-install-composer配置中国镜像

3、  用composer安装laravel:composer create-project laravel/laravel laravel54 “5.4.*”

4、  使用laravel框架之前先给php和apache做相关配置,避免后续麻烦:

5、 php.ini

6、  extension=php_openssl.dll

7、  extension=php_pdo_mysql.dll

8、  extension=php_mbstring.dll

9、  extension=php_fileinfo.dll

10、              extension=php_curl.dll

11、              httpd.conf

12、              LoadModule deflate_module modules/mod_deflate.so

13、              LoadModule rewrite_module modules/mod_rewrite.so

14、              配置完毕以上,重启apache服务。

Laravel的路由

1、  Route::get();//获取资源

2、  Route::post();//创建资源

3、  Route::put();//更新资源

4、  Route::patch();//增亮更新资源

5、  Route::delete();//删除资源

6、  Route::options();//查询资源支持哪些方法

7、  Route::group();//路由分组

Route::group(['prefix'=>'posts'],function (){
   Route::get('/','\App\Http\Controllers\PostController@index');
});

8、  Route::any();//支持所有的路由

9、  Route::match();//可以指定支持的路由

如果支持的是put,那么表单的格式如下

<form action=”/posts” method=”POST”>

{{  method_field(“PUT”)  }}

</form>

数据表的生成

Php artisan make:migration
create_posts_table//创建表

Php artisan migrate//执行数据

Php artisan migrate:rollback//数据回滚操作

//执行数据时出错需在app\providers\appserviceprovider.php的boot方法中输入:

Schema::defaultStringlength(191);

Tinker的使用

1、创建文章:

> $post = new \App\Post();

App\Post {#653}

> $post->title="this is
post1";

"this is post1"

> $post->content="this is
content";

"this is content"

> $post->save();

true

2、设置时区:config/app.php

'timezone' => 'Asia/Shanghai',

重启tinker

3、时间格式的转变:

应在渲染时间中加入:{{$post->created_at->toFormattedDateString()}}

填充内容

Database\factories\modelfactory.php中输入

$factory->define(App\Post::class,function (Faker\Generator $faker) {
    return [
        'title'=>$faker->sentence(6),//6个字符
       
'content'=>$faker->paragraph(10),//10个句子
   
];
});

php artisan tinker

>>>
factory(App\Post::class,20)->create();//创建20条记录,并放入数据库

分页

$posts =Post::orderBy('created_at','desc')->paginate(6);

在index.blade.php的列表页中找到分页,直接替换成  {{$posts->links()}}  即可实现分页功能。

{{ str_limit($post->content,100,'...') }}//内容展示100个字符,超出的显示…

当创建文章点击提交后会报错,需在form表单中输入:{{ csrf_field() }} CSRF是跨站请求伪造

插入富文本编辑器

新建ylaravel.js,输入

var editor = new wangEditor('content');
editor.create();

在main.blade.php引入

<script src="/js/ylaravel.js"></script>

插入富文本编辑器后创建的文章会出现<p></p>标签,此时:

需将index.blade.php中的

{{str_limit($post->content,100,'...')}}

修改成:

{!! str_limit($post->content,100,'...') !!}

实现中文报错

Create.blade.php 中的提交按钮前插入

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

public function store() {
    //验证
   
$this->validate(\request(),[
        'title'=>'required|string|max:100|min:5',
        'content'=>'required|string|min:10',
    ]);
    //逻辑
   
$post = Post::create(\request(['title','content']));
    //渲染
   
return redirect("/posts");
}

图片上传

public function imageUpload(Request $request) {
    $path = $request->file('wangEditorH5File')->storePublicly(md5(time()));
    return asset('storage/'.$path);
    //dd(request()->all());
}

打开php.ini中的php_fileinfo

Main.blade.php

Ylaravel.js

<meta name="csrf-token" content="{{ csrf_token() }

var editor = new wangEditor('content');
editor.config.uploadImgUrl = "/posts/image/upload";
editor.config.uploadHeaders = {
    'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content')
};
editor.create();

实现编辑功能

<form action="/posts/{{$post->id}}" method="POST">
    {{method_field("PUT")}}
    {{csrf_field()}}

public function edit(Post $post) {
    return view('post/edit',compact('post'));
}

实现修改功能

public function update(Post $post) {
    //验证
   
$this->validate(\request(),[
        'title'=>'required|string|max:100|min:5',
        'content'=>'required|string|min:10',
    ]);
    //逻辑
   
$post->title = \request('title');
    $post->content = \request('content');
    $post->save();
    //渲染
   
return redirect("/posts/{$post->id}");
}

在编辑页面edit.blade.php的提交按钮前添加

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

为了方便,可以将错误提示单独放入layout文件夹中error.blade.php,在edit.blade.php中只需要引入即可:@include(‘layout.error’)

实现删除操作

Route::get('/{post}/delete','\App\Http\Controllers\PostController@delete');

public function delete(Post $post) {
    //TODO:用户的权限验证
   
$post->delete();
    return redirect('/posts');
}

laravel简书(1)的更多相关文章

  1. laravel简书(2)

    用户注册 public function register() {         //验证         $this->validate(\request(),[             ' ...

  2. Laravel 5.4 快速开发简书:

    Laravel 5.4 快速开发简书第1章 课程介绍 介绍课程的大体脉络和课程安排 第2章 Laravel 5.4介绍 本节课会带领大家介绍laravel的各个版本历史以及讨论php框架的未来发展趋势 ...

  3. iOS离屏渲染简书

    更详细地址https://zsisme.gitbooks.io/ios-/content/chapter15/offscreen-rendering.html(包含了核心动画) GPU渲染机制: CP ...

  4. openlayers 3 简书

    1. 简书http://www.jianshu.com/p/6785e755fa0d 2. 文档 http://anzhihun.coding.me/ol3-primer/ch03/03-02.htm ...

  5. Python 2.7_发送简书关注的专题作者最新一篇文章及连接到邮件_20161218

    最近看简书文章关注了几个专题作者,写的文章都不错,对爬虫和数据分析都写的挺好,因此想到能不能获取最新的文章推送到Ipad网易邮箱大师.邮件发送代码封装成一个函数,从廖雪峰大神那里学的  http:// ...

  6. 从刚刚「简书」平台的短暂异常,谈Nginx An error occurred报错~

    09.26简书平台的短暂异常 An error occurred. Sorry, the page you are looking for is currently unavailable. Plea ...

  7. swift调用oc语言文件,第三方库文件或者自己创建的oc文件——简书作者

    Swift是怎样调用OC的第三方库的呢?请看下面详情: 情况一: 1.首先打开Xcode,iOS->Application->Single View Application, 选Next. ...

  8. iOS实现简书的账号识别方式(正则表达式)

    通过简书iOS客户端登录,我们会看到请输入手机号或者邮箱登录,但是我们随机输入1234567的时候,便会弹出手机格式不正确,同样也会识别我们的邮箱格式,那么我们在项目中怎么实现这种判断呢? 0E471 ...

  9. 倒戈了,转投简书 -------->

    深情自白 还记得数月前那个月黑风高的晚上,笔主偶遇简书,被那婀娜多姿的Markdown输出深深吸引不能自拔,从此立下毒誓要两边同时发布.然而天有不测风云(这边的太丑),前思后想寝食难安之后作出决定,正 ...

随机推荐

  1. Nginx源码结构及如何处理请求

    一.源码结构   1:下载安装包后,解压,可以看到目录结构,其中src目录下放的是源码       2:src源码目录下,可以看到这几个目录     mail:mail目录中存放了实现Nginx服务器 ...

  2. 随机数的组合问题(JavaScript描述)

    随机数的组合问题在面试时是经常考的,比如之前我就被问到:“有一个可以生成1-5的随机数函数,怎样把它扩大到1-7?” 在解决这个问题之前,先来看看另外一个比较简单的问题:“有一个可以生成1-7的函数, ...

  3. [JAVA]JAVA遍历Map的几种方式

    //遍历key for (String key : dic.keySet() ) { System.out.println(key + dic.get(key)); } //遍历values for ...

  4. ORACLE的impdp和expdp命令

    使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用, ...

  5. JVM优化系列之一(-Xss调整Stack Space的大小)

    Java程序中,每个线程都有自己的Stack Space(堆栈).这个Stack Space不是来自Heap的分配.所以Stack Space的大小不会受到-Xmx和-Xms的影响,这2个JVM参数仅 ...

  6. base64图片内容下载转为图片保存

    网页中的base64图片内容下载后,利用PIL转为图片保存 from skimage.io import imread from PIL import Image from cStringIO imp ...

  7. 随机森林RandomForest

    ID3,C4.5决策树的生成: 输入:训练集D,特征集A,阈值eps, 输出:决策树T 若D中所有样本属于同一类Ck,则T为单节点树,将类Ck作为该结点的类标记,返回T: 若A为空集,即没有特征作为划 ...

  8. k8s学习笔记之二:使用kubeadm安装k8s集群

    一.集群环境信息及安装前准备 部署前操作(集群内所有主机): .关闭防火墙,关闭selinux(生产环境按需关闭或打开) .同步服务器时间,选择公网ntpd服务器或者自建ntpd服务器 .关闭swap ...

  9. 面向的phthon2+3 的场景,Anaconda 安装+环境配置+管理

    standard procedure in pyCharm for creating environment when Anaconda installed Create a conda env vi ...

  10. 清除UIWebView缓存

    //清除cookies NSHTTPCookie *cookie; NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCook ...