لایک و دیس لایک در لاراول

- 1 هفته پیش
توسط Reza Jm آپدیت شد
madadi ( 6530 تجربه )
2 ماه پیش

سلام دوستان
اگر از پکیچی استفاده کردین برا لایک و دیس لایک ممنون میشم معرفی کنید.
من میخوام هم تعداد لایک رو داشته باشم هم دیس لایک
این پکیج هست مثل اینکه
https://github.com/cybercog/laravel-love
من نصب کردم اما متوجه نشدم چطوره کار کردش
ممنون میشم راهنمایی کنید

پایان جهان ( 57748 تجربه )
2 ماه پیش
تخصص : بیکار برنامه نویس
madadi ( 6530 تجربه )
2 ماه پیش

سلام @endworld

سپاس
این فقط لایک هست
درسته میشه لایک رو پس بگیری
اما من میخوام جدا باشن
یعنی تعداد لایک و دیس لایک ها رو بشه نمایش داد
مثل رادیو جوان

علی بیات ( 147867 تجربه )
2 ماه پیش
تخصص : توسعه دهنده ارشد وب

من یه پکیج در این زمینه نوشتم اما لایک و دیسلایکش روی همه
https://packagist.org/packages/alibayat/likeable

اون مدل هم که شما مد نظرتونه قبلا روی گیت‌هاب دیدمو بگردید پیدا می‌کنید

Reza Jm ( 6615 تجربه )
4 هفته پیش

@ali.bayat
سلام.اقای بیات من پکیچ شما نصب کردم و بابت ساخت این پکیچ از شما ممنون ام.
می شه کوئری گرفتن پست های با بیشترین لایک و همچنین کاربرانی که پست هاشون بیشترین لایک داشته برای من بنویسید

علی بیات ( 147867 تجربه )
4 هفته پیش
تخصص : توسعه دهنده ارشد وب

@rezajamalzadeh900
درود، لطف دارید.

با پراپرتی likeCount می‌تونید تعداد کل لایک‌های یه آیتم رو حساب کنید.. در حین دریافت پست‌ها میتونید از متد map استفاده کنید و به ترتیب با بیشترین لایک رو برگردونید

Reza Jm ( 6615 تجربه )
3 هفته پیش

@ali.bayat
سلام مجدد اقای بیات . ببخشید می خواستم این سیستم لایک به صورت ajax پیاده کنم می شه کمک کنید

علی بیات ( 147867 تجربه )
3 هفته پیش
تخصص : توسعه دهنده ارشد وب

@rezajamalzadeh900

مسلما بیشتر این پروسه سمت فرانت‌اند باید انجام بشه (مثل دریافت و آپدیت لیست لایک‌‌ها، فرستادن درخواست Ajax )

اما سمت سرور کارهایی که باید انجام بدید به شکل زیره:

  • تعریف Route از نوع POST برای لایک کردن و فرستادن درخواست Ajax
  • تعریف Route از نوع GET برای دریافت تعداد لایک‌‌ها و آپدیت اطلاعات
  • ساخت یک کنترلر که Route ها به متدهای اون منتقل میشند..
    و استفاده از پکیج لایک داخل این کنترلر می‌تونه صورت بگیره
رضا زراعت ( 12960 تجربه )
3 هفته پیش
تخصص : طراح وب

به نظرم شاید بشه با redis یا یک کتاب خانه دیگه درستش کرد با زمان اندک و نیاز به ایجاد پیج دیگه ای نباشه

Reza Jm ( 6615 تجربه )
2 هفته پیش

@ali.bayat
با سلام.اقای بیات من قسمت بک اند درست کردم اما مشکلم قسمت فرانت هست چون jquery به گفته یکی از دوستان یاد نگرفتم.ممنون می شم این قسمت کمک کنید؟

علی بیات ( 147867 تجربه )
2 هفته پیش
تخصص : توسعه دهنده ارشد وب

@rezajamalzadeh900

متاسفانه من نمونه Ajax این کار رو با jquery انجام ندادم اما با VueJs چرا و مراحلش هم ساده است

باید یه Component بسازید که حاوی فرم، آیکون لایک و نمایش تعداد عددش باشه...
هنگامی که آیکون کلیک شد، با استفاده از axios یا هر کتابخونه دیگه درخواست ajax فرستاده میشه و آیکون عوض میشه و تعداد لایک هم آپدیت میشه
و هنگام دیس لایک هم عکس این قضیه اتفاق میفته

Reza Jm ( 6615 تجربه )
1 هفته پیش

@ali.bayat
سلام مجدد. من سیستم لایک با vue پیاده سازی کردم فقط مشکل گرفتن تعداد لایک ها در vue هست .ممنون می شم کمک کنید

علی بیات ( 147867 تجربه )
1 هفته پیش
تخصص : توسعه دهنده ارشد وب

@rezajamalzadeh900
یه اِندپوینت سمت بک‌اند باید بوجود بیارید مثلا

Route::get('api/likesCount/{Post}', 'LikesController@countLikes');

post یا هر چیز دیگه رو که می‌خواهید تعداد لایکش رو چک کنید در درخواست Ajax می‌فرستید و متد countLikes در LikesController یا هر کنترلر دیگه تعداد لایک شده رو به JSon بر می‌گردونه و شما در Vue ازش استفاده می‌کنید..
در‌خواست Ajax ارسالی هم شبیه زیر میشه:

      axios.get('http://localhost/api/likesCount/1')
      .then(response => {
         this.likes = response.data.likes;
       })
       .catch(error => {
         // console.log(error);
      })
Reza Jm ( 6615 تجربه )
1 هفته پیش

@ali.bayat
@ali.bayat
این کدی که من برای vue.js استفاده کردم.چه کدی باید بهش اضافه کنم

<template>  
<span>  
<a href="#" v-if="isFavorited" [@click.prevent](https://roocket.ir/@click.prevent)="unFavorite(link)">  
<i class="fa fa-heart"></i>  
</a>  
<a href="#" v-else [@click.prevent](https://roocket.ir/@click.prevent)="favorite(link)">  
<i class="fa fa-heart-o"></i>  
</a>  
</span>  
</template>

<script>  
export default {  
props: \['link', 'favorited'\],
data: function () {
    return {
        isFavorited: '',
    }
},

mounted() {
    this.isFavorited = this.isFavorite ? true : false;

},
computed: {
    isFavorite() {
        return this.favorited;
    },
},

methods: {
    favorite(link) {
        axios.post('/favorite/' + link)
            .then(response => this.isFavorited = true)
            .catch(response => console.log(response.data));
    },

    unFavorite(link) {
        axios.post('/unfavorite/' + link)
            .then(response => this.isFavorited = false)
            .catch(response => console.log(response.data));
    },
}

}


</script>  
علی بیات ( 147867 تجربه )
1 هفته پیش
تخصص : توسعه دهنده ارشد وب

ابتدا داخل تگ template یه جا برای نمایش لایک‌ها در نظر بگیر:

<template>  
<div>
<span>  
<a href="#" v-if="isFavorited" [@click.prevent](https://roocket.ir/@click.prevent)="unFavorite(link)">  
<i class="fa fa-heart"></i>  
</a>  
<a href="#" v-else [@click.prevent](https://roocket.ir/@click.prevent)="favorite(link)">  
<i class="fa fa-heart-o"></i>  
</a>  
</span>  

<span v-text="likesCount"> </span>

</div>
</template>

گزینه رو به data اضافه کن:

data: function () {
    return {
        isFavorited: '',
    likesCount: '',
    }
}

یه متد براش داخل methods بساز شبیه به زیر:


count(link) {
      axios.get('http://localhost/api/likesCount/' + link)
      .then(response => {
         this.likesCount = response.data;
       })
       .catch(error => {
         // console.log(error);
      })
}

و در نهایت توی Mounted متد رو صدا بزن

Reza Jm ( 6615 تجربه )
1 هفته پیش

@ali.bayat
اقای بیات ببخشید زیاد مزاحم می شم. همون کدی که بالا گفتید را زدم و تعداد لایک ها نمایش داده شد اما مشکل اینجاس که اگه مثلا تعداد لایک ها 0 باشه بعد من دکمه لایک بزنم ،لایک داخل دیتابس ثبت می شه اما باید صفحه رفریش بشه تا تعداد لایک جدید نمایش داده بشه؟

علی بیات ( 147867 تجربه )
1 هفته پیش
تخصص : توسعه دهنده ارشد وب

@rezajamalzadeh900
خواهش می‌کنم.
برای آپدیت شدن در لحظه باید داخل متدهای favorite و unFavorite .... و داخل قسمت then. تعداد لایک رو آپدیت کنید:

this.likesCount += 1;
و 
this.likesCount -= 1;
Reza Jm ( 6615 تجربه )
1 هفته پیش

@ali.bayat
@ali.bayat
@hesammousavi
سلام مجدد . ببخشید می خواست بدونم با توجه به پکیچ بالا اگه بخوام وقتی پست حذف شد تعداد لایک هاش داخل جدول likeable هم حذف بشه باید چی کار کنم؟

برای ارسال پاسخ باید وارد سایت شوید