ctl/socialmapfavorites

基本包装,用于收藏和取消收藏用户

1.2.0 2016-12-11 21:11 UTC

README

Latest Stable Version Software License Build Status Scrutinizer Code Quality Code Coverage Total Downloads Latest Unstable Version

用于收藏和取消收藏认证用户的PHP包

目前仅支持Laravel 5.2

安装

通过Composer

$ composer require ctl/socialmapfavorites

安装

$ php artisan vendor:publish

将服务提供者添加到config/app.php中的'providers'数组中

CTL\SocialMapFavorites\SocialMapFavoritesServiceProvider::class,

导航到App/Jobs/FavAUser。将use CTL\SocialMapFavorites\Jobs\Job;替换为use App\Jobs\Job;

重复上述步骤,替换unFavAUser

导航到App\Users。添加ActionableTrait,例如...

<?php

namespace App;

use Core\Users\ActionableTrait;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model implements AuthenticatableContract,
                                    AuthorizableContract,
                                    CanResetPasswordContract
{
    use Authenticatable, Authorizable, CanResetPassword, ActionableTrait;

    /**
     * The database table used by the model.

将"Core\\": "Core/"添加到您的项目composer.json中。它应该看起来像这样...

"psr-4": {
            "App\\": "app/",
            "Core\\": "Core/"
        }

如果更改没有生效,运行code>composer dump-autoload

更改Core\Users\ActionableTrait和Core\Users\UsersOrigin的namespace

最后,运行....

$ php artisan make:migration CreateFavoritesTable

创建收藏表

您的迁移应该看起来像

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateFavoritesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('favs', function(Blueprint $table){
            $table->increments('id');
            $table->integer('favoritee_id')->index();
            $table->integer('favorited_id')->index();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('favs', function(Blueprint $table){
            Schema::drop('favs');
        });
    }
}

扩展安装

在blade文件内...

    @if (!$VariableName->checkFavorited() )
        <div class="btn-group">
          {!! Form::open(['action'=>'ControllerName@store']) !!}
          {!! Form::hidden('userIDToFav', $VariableName->id) !!}

            <button type="submit" class="btn btn-success">Add Fav</button>
          {!! Form::close() !!}
        </div>
    @else
        {!! Form::open(['method' => 'DELETE', 'action' => ['ControllerName@destroy', $VariableName->id] ]) !!}
        {!! Form::hidden('userIDToUnFav', $VariableName->id) !!}
      <div class="btn-group">
        <button type="submit" class="btn btn-primary"><span>Favorited</span></button>
        {!! Form::close() !!}
      </div>
    @endif

在您的控制器内...

    /**
     * Favorite A User
     *
     */
    public function store(Request $request){
      $base = $request->input('userIDToFav');
      $this->dispatch(new FavAUser(\Auth::id(), $base));

      return back();
    }

    /**
     * UnFavorite a user
     *
     */
    public function destroy(Request $request){
      $base = $request->input('userIDToUnFav');
      $this->dispatch(new UnFavAUser(\Auth::id(), $base));

      return back();
    }

用于电子邮件使用...

在控制器内...

    /**
     * Fav A User
     *
     * @return Response
     */
    public function store(User $user, Request $request)
    {
        $base = array_add($request, 'userID', Auth::id() );
        $clear = $this->dispatchFrom(FavAUserCommand::class, $base);

        // For emailing User Fav
        $findingUserObject = $user->find($request->input('userIDToFav'));
        $this->mail->sendFavAUserNotificationEmail($findingUser, $request->input('userFaved'), Auth::user()->username);


        session()->flash('success_message','You are now following');
        return back();
    }

对于$this->mail->sendFavAUserNotificationEmail();

您需要

    protected $mail;
    protected $usersOrigin;


    /**
    * Class Constructor
    */
    public function __construct(UsersOrigin $usersOrigin, FavAUserMail $mail){

      $this->mail = $mail;
      $this->usersOrigin = $usersOrigin;
    }

别忘了在控制器类的顶部添加use Core\Users\Mail\FavAUserMail; 和 use Core\Users\UsersOrigin;

测试

$ phpunit

贡献

有关详细信息,请参阅CONTRIBUTING

许可协议

爱立信公共许可协议(EPL v1.0)。有关更多信息,请参阅许可协议