Я хочу создать приглашение после подтверждения запроса участника, используя События и Слушатели в Laravel 7.
Контроллер приглашений:
class InviteController extends Controller
{
private InviteRepositoryInterface $invite_repository;
public function __construct(InviteRepositoryInterface $invite_repository)
{
$this->invite_repository = $invite_repository;
}
public function __invoke(InviteRequest $request)
{
$member_request = MemberRequest::find($request->member_request_id);
if ($this->_MemberRequestIsValid($member_request))
return response()->json(['error' => ['message' => 'Please, enter an existing member request.', 'object' => $member_request]]);
$this->invite_repository->createByMemberRequestId($member_request->id);
return response()->json(['success' => true]);
}
Что я пробовал: redirect()->route('invite', ['member_request_id' => $event->member_request->id]);
и: app(InviteController::class)->__invoke(['member_request_id' => $event->member_request->id]);
Оба не работали из-за конструктора.
ОБНОВЛЕНИЕ: Слушатель:
namespace App\Listeners\MemberRequest\Approved;
use App\Events\MemberRequest\Approved;
use App\Http\Controllers\Auth\Registration\Invite\InviteController;
class CreateInvite
{
/**
* Handle the event.
*
* @param Approved $event
* @return void
*/
public function handle(Approved $event)
{
redirect()->route('invite', ['member_request_id' => $event->member_request->id]);
// app(InviteController::class)->__invoke(['member_request_id' => $event->member_request->id]);
}
}
Когда я запускаю событие, приглашение не создан, но метод вызова InviteController работает в соответствии с моими тестами.
Результаты теста: