laravel簡書(1)

Laravel的社區生態php

中文社區(http://laravel-china.orgmysql

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

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

數據填充包(http://github.com/fzaninotto/Fakergithub

 

與其餘框架的優點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'); }

相關文章
相關標籤/搜索