ctl / socialmapfavorites
基本包装,用于收藏和取消收藏用户
1.2.0
2016-12-11 21:11 UTC
Requires
- php: >=5.5.9 || 7.0.*
- guzzlehttp/guzzle: ^6.2
- illuminate/auth: ^5.2
- illuminate/bus: ^5.2
- illuminate/contracts: ^5.2
- illuminate/mail: ^5.2
- illuminate/support: ^5.2
- mockery/mockery: ^0.9.4
- symfony/console: ^3.1
Requires (Dev)
- graham-campbell/testbench: ^3.0
- illuminate/database: ^5.2
- illuminate/events: ^5.2
- phpunit/phpunit: 4.*
This package is not auto-updated.
Last update: 2024-09-14 19:04:02 UTC
README
用于收藏和取消收藏认证用户的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)。有关更多信息,请参阅许可协议