成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

laravel5.3 vue 實(shí)現(xiàn)收藏夾功能

adie / 3223人閱讀

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

laravel5.3 vue 實(shí)現(xiàn)收藏夾功能

?

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

?
下載之前的項(xiàng)目,完成安裝。
?

1.0 寫在之前的(before)

?

為了避免后面踩到vue版本的坑,請(qǐng)務(wù)必閱讀此部分
?
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

將原來(lái)的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

將原來(lái)的el: "body"改為el: "#app"
?

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

?

1.1 安裝npm 模塊

(如果之前沒(méi)有執(zhí)行此操作)
?

npm  install

?

?
?

1.2 創(chuàng)建模型及遷移

我們需要一個(gè)User模型(laravel附帶),一個(gè)Post模型和一個(gè)Favorite模型以及它們各自的遷移文件。
因?yàn)槲覀冎皠?chuàng)建過(guò)了Post的模型,所以我們只需要?jiǎng)?chuàng)建一個(gè)Favorite模型即可。
?

php artisan make:model AppModelsFavorite -m

?

?
這會(huì)創(chuàng)建一個(gè)Favorite模型以及遷移文件。
?

1.3 修改posts遷移表及favoritesup方法

posts表在id字段后面新增一個(gè)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。

?
然后進(jìn)行表遷移

php artisan migrate

?

1.4 用戶認(rèn)證

因?yàn)槲覀冎熬鸵呀?jīng)創(chuàng)建過(guò)了,所以這里就不需要重復(fù)創(chuàng)建了。

如果你沒(méi)有創(chuàng)建過(guò)用戶認(rèn)證模塊,則需要執(zhí)行php artisan make:auth
?
2. 完成搜藏夾功能

修改routes/web.php

2.1 創(chuàng)建路由器

?

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

?

2.2 文章和用戶之間多對(duì)多關(guān)系

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

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

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

2.3 創(chuàng)建文章控制器

因?yàn)槲覀冎皠?chuàng)建過(guò)了,這里也不需要?jiǎng)?chuàng)建了。

如果你沒(méi)有創(chuàng)建過(guò),請(qǐng)執(zhí)行php artisan make:controller ArticleController
?
2.4 在文章控制器添加favoritePostunFavoritePost兩個(gè)方法
注意要頭部要引入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 創(chuàng)建收藏夾組件

?

// 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

?
然后我們要?jiǎng)?chuàng)建favorited()
打開(kāi)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 創(chuàng)建用戶控制器

?

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/92596.html

相關(guān)文章

  • laravel5.3 vue 實(shí)現(xiàn)藏夾功能

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

    mumumu 評(píng)論0 收藏0
  • Laravel實(shí)用小功能

    摘要:實(shí)用小功能控制訪問(wèn)次數(shù)的新特性,通過(guò)中間件設(shè)置根據(jù)控制訪問(wèn)次數(shù)原理通過(guò)回傳三個(gè)響應(yīng)頭,,實(shí)現(xiàn)控制訪問(wèn)次數(shù)。返回的是集合。 Laravel實(shí)用小功能 1.控制訪問(wèn)次數(shù) laravel5.2的新特性,通過(guò)中間件設(shè)置throttle根據(jù)IP控制訪問(wèn)次數(shù) 原理:通過(guò)回傳三個(gè)響應(yīng)頭X-RateLimit-Limit,X-RateLimit-Remaining,Retry-After實(shí)現(xiàn)控制訪問(wèn)次...

    Vultr 評(píng)論0 收藏0
  • Laravel實(shí)用小功能

    摘要:實(shí)用小功能控制訪問(wèn)次數(shù)的新特性,通過(guò)中間件設(shè)置根據(jù)控制訪問(wèn)次數(shù)原理通過(guò)回傳三個(gè)響應(yīng)頭,,實(shí)現(xiàn)控制訪問(wèn)次數(shù)。返回的是集合。 Laravel實(shí)用小功能 1.控制訪問(wèn)次數(shù) laravel5.2的新特性,通過(guò)中間件設(shè)置throttle根據(jù)IP控制訪問(wèn)次數(shù) 原理:通過(guò)回傳三個(gè)響應(yīng)頭X-RateLimit-Limit,X-RateLimit-Remaining,Retry-After實(shí)現(xiàn)控制訪問(wèn)次...

    twohappy 評(píng)論0 收藏0
  • API Token Authentication

    摘要:新增了很多的新特性,包括了內(nèi)置多用戶認(rèn)證表單數(shù)組輸入驗(yàn)證隱式路由模型綁定中間件組的定義中間件訪問(wèn)頻率限制等主要功能。相對(duì)于變化有點(diǎn)大,簡(jiǎn)化了的目錄結(jié)構(gòu),并將路由分離出來(lái)。由于已將的路由單獨(dú)分離出來(lái),因此只需在中添加路由規(guī)則。 Laravel 5.2 新增了很多的新特性,包括了內(nèi)置多用戶認(rèn)證、表單數(shù)組輸入驗(yàn)證、隱式路由模型綁定、中間件組的定義、中間件 throttle 訪問(wèn)頻率限制等主要...

    KitorinZero 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<