国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

laravel5.3 vue 實現收藏夾功能

mumumu / 1616人閱讀

摘要:要定義這種關系,請打開模型并添加一個注意模型的命名空間是所以注意要頭部引入第二個參數是數據透視表收藏夾的名稱。這將允許插入或更新行時,數據透視表上的時間戳和列將受到影響。

laravel5.3 vue 實現收藏夾功能

?

本篇是接著laravel中使用WangEditor及多圖上傳(下篇) 
所以我們這里不演示怎么新建項目了。
?
1. laravel項目安裝

?
下載之前的項目,完成安裝。
?

1.0 寫在之前的(before)

?

為了避免后面踩到vue版本的坑,請務必閱讀此部分
?
1.0.1 修改package.json
{
  "private": true,
  "scripts": {
    "prod": "gulp --production",
    "dev": "gulp watch"
  },
  "devDependencies": {
    "bootstrap-sass": "^3.3.7",
    "gulp": "^3.9.1",
    "jquery": "^3.1.0",
    "laravel-elixir": "^6.0.0-14",
    "laravel-elixir-vue-2": "^0.2.0",
    "laravel-elixir-webpack-official": "^1.0.2",
    "lodash": "^4.16.2",
    "vue": "^2.0.1",
    "vue-resource": "^1.0.3"
  }
}

?

1.0.2 修改gulpfile.js

將原來的require("laravel-elixir-vue");
修改為require("laravel-elixir-vue-2");
?

const elixir = require("laravel-elixir");
?
require("laravel-elixir-vue-2");
?
/*
 |--------------------------------------------------------------------------
 | Elixir Asset Management
 |--------------------------------------------------------------------------
 |
 | Elixir provides a clean, fluent API for defining some basic Gulp tasks
 | for your Laravel application. By default, we are compiling the Sass
 | file for our application, as well as publishing vendor resources.
 |
 */
?
elixir(mix => {
    mix.sass("app.scss")
       .webpack("app.js");
});

?
?

1.0.3 修改resource/assets/js/app.js

將原來的el: "body"改為el: "#app"
?

const app = new Vue({
    el: "#app"
});

?

1.1 安裝npm 模塊

(如果之前沒有執行此操作)
?

npm  install

?

?
?

1.2 創建模型及遷移

我們需要一個User模型(laravel附帶),一個Post模型和一個Favorite模型以及它們各自的遷移文件。
因為我們之前創建過了Post的模型,所以我們只需要創建一個Favorite模型即可。
?

php artisan make:model AppModelsFavorite -m

?

?
這會創建一個Favorite模型以及遷移文件。
?

1.3 修改posts遷移表及favoritesup方法

posts表在id字段后面新增一個user_id字段
?

php artisan make:migration add_userId_to_posts_table --table=posts

修改database/migrations/2018_01_18_145843_add_userId_to_posts_table.php

    public function up()
    {
        Schema::table("posts", function (Blueprint $table) {
            $table->integer("user_id")->unsigned()->after("id");
        });
    }

?
database/migrations/2018_01_18_142146_create_favorites_table.php
?

    public function up()
    {
        Schema::create("favorites", function (Blueprint $table) {
            $table->increments("id");
            $table->integer("user_id")->unsigned();
            $table->integer("post_id")->unsigned();
            $table->timestamps();
        });
    }

?
favorites表包含兩列:
?

user_id 被收藏文章的用戶ID。
post_id 被收藏的帖子的ID。

?
然后進行表遷移

php artisan migrate

?

1.4 用戶認證

因為我們之前就已經創建過了,所以這里就不需要重復創建了。

如果你沒有創建過用戶認證模塊,則需要執行php artisan make:auth
?
2. 完成搜藏夾功能

修改routes/web.php

2.1 創建路由器

?

?
Auth::routes();
?
Route::post("favorite/{post}", "ArticleController@favoritePost");
Route::post("unfavorite/{post}", "ArticleController@unFavoritePost");
?
Route::get("my_favorites", "UsersController@myFavorites")->middleware("auth");

?

2.2 文章和用戶之間多對多關系

由于用戶可以將許多文章標記為收藏夾,并且一片文章可以被許多用戶標記為收藏夾,所以用戶與最收藏的文章之間的關系將是多對多的關系。要定義這種關系,請打開User模型并添加一個favorites()
?
app/User.php

注意post模型的命名空間是 AppModelsPost
所以注意要頭部引入use AppModelsPost;
?
    public function favorites()
    {
        return $this->belongsToMany(Post::class, "favorites", "user_id", "post_id")->withTimeStamps();
    }

?
第二個參數是數據透視表(收藏夾)的名稱。第三個參數是要定義關系(User)的模型的外鍵名稱(user_id),而第四個參數是要加入的模型(Post)的外鍵名稱(post_id)。
?
注意到我們鏈接withTimeStamps()到belongsToMany()。這將允許插入或更新行時,數據透視表上的時間戳(create_at和updated_at)列將受到影響。
?
?

2.3 創建文章控制器

因為我們之前創建過了,這里也不需要創建了。

如果你沒有創建過,請執行php artisan make:controller ArticleController
?
2.4 在文章控制器添加favoritePostunFavoritePost兩個方法
注意要頭部要引入use IlluminateSupportFacadesAuth;
?
favorites()->attach($post->id);
        return back();
    }
?
    public function unFavoritePost(Post $post)
    {
        Auth::user()->favorites()->detach($post->id);
        return back();
    }
}

?

2.5 集成axios模塊

安裝axios

?

npm install axios --save

?

引入axios模塊

resource/assets/js/bootstrap.js
在最后加入
?

import axios from "axios";
window.axios = axios;

?

2.6 創建收藏夾組件

?

// resources/assets/js/components/Favorite.vue
?

?

?

2.7 視圖中引入組件

在視圖組件使用之前,我們先引入字體文件
resource/views/layouts/app.blade.php
頭部引入字體文件
?

    

?
并在app.blade.php
添加我的收藏夾鏈接
?

// 加在logout-form之后

?
我的收藏夾

?
使用組件
?

// resources/views/home/article/index.blade.php
?
if (Auth::check())
    
endif

?
然后我們要創建favorited()
打開app/Models/Post.php增加favorited()方法

注意要在頭部引用命名空間
use AppModelsFavorite;
use IlluminateSupportFacadesAuth;
?
    public function favorited()
    {
        return (bool) Favorite::where("user_id", Auth::id())
                            ->where("post_id", $this->id)
                            ->first();
    }

?

2.8 使用組件

引入Favorite.vue組件
resources/assets/js/app.js
?

Vue.component("favorite", require("./components/Favorite.vue"));

?
編譯

npm run dev

?

?

效果圖
?

?
3. 完成我的收藏夾

?

3.1 創建用戶控制器

?

php artisan make:controller UsersController

?
修改app/Http/Controllers/UsersController.php
?

favorites;
        return view("users.my_favorites", compact("myFavorites"));
    }
}

?
添加視圖文件

// resources/views/users/my_favorites.blade.php
?
extends("layouts.app")
?
@section("content")
@forelse ($myFavorites as $myFavorite)
?
@if (Auth::check()) @endif
@empty

You have no favorite posts.

@endforelse
@endsection

?
然后重新向一下根目錄
routes/web.php 添加一條路由
?

Route::get("/", "ArticleController@index");

?
最后效果圖

?

參考資料 
Implement a Favoriting Feature Using Laravel and Vue.js
laravel 5.4 vue 收藏文章
github地址 https://github.com/pandoraxm/laravel-vue-favorites
原文鏈接 https://www.bear777.com/blog/laravel5-3-vue

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28144.html

相關文章

  • laravel5.3 vue 實現藏夾功能

    摘要:要定義這種關系,請打開模型并添加一個注意模型的命名空間是所以注意要頭部引入第二個參數是數據透視表收藏夾的名稱。這將允許插入或更新行時,數據透視表上的時間戳和列將受到影響。 laravel5.3 vue 實現收藏夾功能 ? 本篇是接著laravel中使用WangEditor及多圖上傳(下篇) 所以我們這里不演示怎么新建項目了。? 1. laravel項目安裝 ?下載之前的項目,完成安裝。...

    adie 評論0 收藏0
  • Laravel實用小功能

    摘要:實用小功能控制訪問次數的新特性,通過中間件設置根據控制訪問次數原理通過回傳三個響應頭,,實現控制訪問次數。返回的是集合。 Laravel實用小功能 1.控制訪問次數 laravel5.2的新特性,通過中間件設置throttle根據IP控制訪問次數 原理:通過回傳三個響應頭X-RateLimit-Limit,X-RateLimit-Remaining,Retry-After實現控制訪問次...

    Vultr 評論0 收藏0
  • Laravel實用小功能

    摘要:實用小功能控制訪問次數的新特性,通過中間件設置根據控制訪問次數原理通過回傳三個響應頭,,實現控制訪問次數。返回的是集合。 Laravel實用小功能 1.控制訪問次數 laravel5.2的新特性,通過中間件設置throttle根據IP控制訪問次數 原理:通過回傳三個響應頭X-RateLimit-Limit,X-RateLimit-Remaining,Retry-After實現控制訪問次...

    twohappy 評論0 收藏0
  • API Token Authentication

    摘要:新增了很多的新特性,包括了內置多用戶認證表單數組輸入驗證隱式路由模型綁定中間件組的定義中間件訪問頻率限制等主要功能。相對于變化有點大,簡化了的目錄結構,并將路由分離出來。由于已將的路由單獨分離出來,因此只需在中添加路由規則。 Laravel 5.2 新增了很多的新特性,包括了內置多用戶認證、表單數組輸入驗證、隱式路由模型綁定、中間件組的定義、中間件 throttle 訪問頻率限制等主要...

    KitorinZero 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<