Laravel 7.x вызов метода Controller в Listener с переменными конструкции - PullRequest
0 голосов
/ 09 апреля 2020

Я хочу создать приглашение после подтверждения запроса участника, используя События и Слушатели в 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 работает в соответствии с моими тестами.

Результаты теста: Testresults

1 Ответ

0 голосов
/ 09 апреля 2020

Я исправил это с помощью репозиториев.

(new InviteRepository(new MemberRequestRepository()))->createByMemberRequestId($event->member_request->id);
...