Laravel的社區生態php
中文社區(http://laravel-china.org)mysql
5.4中文文檔(http://d.laravel-china.org/docs/5.4)laravel
Laravel源碼地址(http://github.com/laravel/laravel)git
數據填充包(http://github.com/fzaninotto/Faker)github
與其餘框架的優點sql
一、laravel包含的功能更爲豐富:隊列,搜索,數據庫遷移,定時腳本數據庫
二、laravel使用了豐富的第三方包apache
Laravel的安裝app
一、 安裝環境的要求:PHP>=5.6.4 開啓:openssl,PDO,mbstring,tokenizer,xmlcomposer
二、 安裝composer:https://pkg.phpcomposer.com/#how-to-install-composer配置中國鏡像
三、 用composer安裝laravel:composer create-project laravel/laravel laravel54 「5.4.*」
四、 使用laravel框架以前先給php和apache作相關配置,避免後續麻煩:
五、 php.ini
六、 extension=php_openssl.dll
七、 extension=php_pdo_mysql.dll
八、 extension=php_mbstring.dll
九、 extension=php_fileinfo.dll
十、 extension=php_curl.dll
十一、 httpd.conf
十二、 LoadModule deflate_module modules/mod_deflate.so
1三、 LoadModule rewrite_module modules/mod_rewrite.so
1四、 配置完畢以上,重啓apache服務。
Laravel的路由
一、 Route::get();//獲取資源
二、 Route::post();//建立資源
三、 Route::put();//更新資源
四、 Route::patch();//增亮更新資源
五、 Route::delete();//刪除資源
六、 Route::options();//查詢資源支持哪些方法
七、 Route::group();//路由分組
Route::group(['prefix'=>'posts'],function (){
Route::get('/','\App\Http\Controllers\PostController@index');
});
八、 Route::any();//支持全部的路由
九、 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的使用
一、建立文章:
> $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
二、設置時區:config/app.php
'timezone' => 'Asia/Shanghai',
重啓tinker
三、時間格式的轉變:
應在渲染時間中加入:{{$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'); }