laravel简书(1)
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)的更多相关文章
- laravel简书(2)
用户注册 public function register() { //验证 $this->validate(\request(),[ ' ...
- Laravel 5.4 快速开发简书:
Laravel 5.4 快速开发简书第1章 课程介绍 介绍课程的大体脉络和课程安排 第2章 Laravel 5.4介绍 本节课会带领大家介绍laravel的各个版本历史以及讨论php框架的未来发展趋势 ...
- iOS离屏渲染简书
更详细地址https://zsisme.gitbooks.io/ios-/content/chapter15/offscreen-rendering.html(包含了核心动画) GPU渲染机制: CP ...
- openlayers 3 简书
1. 简书http://www.jianshu.com/p/6785e755fa0d 2. 文档 http://anzhihun.coding.me/ol3-primer/ch03/03-02.htm ...
- Python 2.7_发送简书关注的专题作者最新一篇文章及连接到邮件_20161218
最近看简书文章关注了几个专题作者,写的文章都不错,对爬虫和数据分析都写的挺好,因此想到能不能获取最新的文章推送到Ipad网易邮箱大师.邮件发送代码封装成一个函数,从廖雪峰大神那里学的 http:// ...
- 从刚刚「简书」平台的短暂异常,谈Nginx An error occurred报错~
09.26简书平台的短暂异常 An error occurred. Sorry, the page you are looking for is currently unavailable. Plea ...
- swift调用oc语言文件,第三方库文件或者自己创建的oc文件——简书作者
Swift是怎样调用OC的第三方库的呢?请看下面详情: 情况一: 1.首先打开Xcode,iOS->Application->Single View Application, 选Next. ...
- iOS实现简书的账号识别方式(正则表达式)
通过简书iOS客户端登录,我们会看到请输入手机号或者邮箱登录,但是我们随机输入1234567的时候,便会弹出手机格式不正确,同样也会识别我们的邮箱格式,那么我们在项目中怎么实现这种判断呢? 0E471 ...
- 倒戈了,转投简书 -------->
深情自白 还记得数月前那个月黑风高的晚上,笔主偶遇简书,被那婀娜多姿的Markdown输出深深吸引不能自拔,从此立下毒誓要两边同时发布.然而天有不测风云(这边的太丑),前思后想寝食难安之后作出决定,正 ...
随机推荐
- Http协议基础及发展历史
一.网络分层协议 经典五层模型 1.物理层:(电脑的硬件,网卡端口,网线,网线连出去的光缆) 定义物理设备如何传输数据 2.数据链路层 在通信的实体间建立数据链路连接. 两台机器物理上是可以连接在一起 ...
- python 基本语句
python 基本语句 在使用python的变量前必须给它赋值,因为python变量没有默认值. 获取用户输入值 此时需要注意:input函数的返回值为文本或字符串. 一些简单的函数 乘方 绝对值 将 ...
- bzoj5103: [POI2018]Ró?norodno
Description 给定一个n行m列的矩阵,请对于每个长宽均为k的连续子正方形,统计里面出现过的数值的种类数. Input 第一行包含三个正整数n,m,k(n,m<=3000,k<=m ...
- Js将数字转化为中文大写
function number_chinese(str) { var num = parseFloat(str); var strOutput = "", strUnit = '仟 ...
- SAS 删除数据和对缺失值处理代码程序
%INCLUDE '00@HEADER.SAS'; %LET dir=..\04@Model;LIBNAME cc "&dir"; %MACRO ModelVariable ...
- 红外NEC协议
注意: 用示波器在接收头抓的电平看起来和NEC协议刚好相反, 那是因为:HS0038B 这个红外一体化接收头,当收到有载波的信号的时候,会输出一个低电平,空闲的时候会输出高电平. 具体情况,具体分析. ...
- VS2012 C# 连接MySQL数据库
原则:不安装 1.下载: https://dev.mysql.com/downloads/connector/net/6.8.html#downloads 2.解压 → 3.添加引用(一个MySql. ...
- The Weather
后台: <?php //接受查询的城市 $city = $_GET['city']; //连接redis $redis = new redis(); $redis->connect(&qu ...
- Android 开发 框架系列 Google的ORM框架 Room
目录 简介 导入工程 使用流程概况 一个简单的小Demo 深入学习 @Entity使用 自定义表名 tableName 自定义字段名@ColumnInfo 主键 @PrimaryKey 索引 @In ...
- Maven CXF wsdl2java XMLGregorianCalendar类型更改
jaxb-bindings.xml配置: <?xml version="1.0" encoding="UTF-8"?> <jaxb:bindi ...