Create name for a *after enter status* event.
public static afterEnterStatus ( string $status = self::ANY_STATUS ) : string | ||
$status | string | the status name or any status if not set |
Результат | string | name of the event |
public function testChangeStatusEventOnSaveSuccess() { $this->model->on(WorkflowEvent::beforeEnterStatus(), function ($event) { $this->eventsBefore[] = $event; }); $this->model->on(WorkflowEvent::afterEnterStatus(), function ($event) { $this->eventsAfter[] = $event; }); verify('event handler handlers have been called', count($this->eventsBefore) == 0 && count($this->eventsAfter) == 0)->true(); $this->model->enterWorkflow(); verify('current status is set', $this->model->hasWorkflowStatus())->true(); expect('event handler handlers have been called', count($this->eventsBefore) == 1 && count($this->eventsAfter) == 1)->true(); $this->model->status = 'Item04Workflow/B'; verify('save succeeds', $this->model->save())->true(); expect('model has changed to status B', $this->model->getWorkflowStatus()->getId())->equals('Item04Workflow/B'); expect('beforeChangeStatus handler has been called', count($this->eventsBefore))->equals(2); expect('afterChangeStatus handler has been called', count($this->eventsAfter))->equals(2); }
public function events() { return [WorkflowEvent::beforeEnterStatus('Item06Workflow/new') => "beforeNew", WorkflowEvent::afterEnterStatus('Item06Workflow/new') => "afterNew", WorkflowEvent::afterEnterStatus('Item06Workflow/correction') => "postToCorrect", WorkflowEvent::beforeLeaveStatus('Item06Workflow/correction') => "postCorrected", WorkflowEvent::beforeEnterStatus('Item06Workflow/published') => "checkCanBePublished", WorkflowEvent::beforeChangeStatus('Item06Workflow/published', 'Item06Workflow/archive') => "canBeArchived", WorkflowEvent::beforeLeaveWorkflow('Item06Workflow') => 'beforeLeaveWorkflow', WorkflowEvent::afterLeaveWorkflow('Item06Workflow') => 'afterLeaveWorkflow']; }
/** * Produces the following event sequence when a model changes from status A to status B. * * - beforeLeaveStatus(*) * - beforeLeaveStatus(A) * - beforeChangeStatusFrom(A)to(B) * - beforeEnterStatus(*) * - beforeEnterStatus(B) * * - afterLeaveStatus(*) * - afterLeaveStatus(A) * - afterChangeStatusFrom(A)to(B) * - afterEnterStatus(*) * - afterEnterStatus(B) * @see \raoul2000\workflow\events\IEventSequence::createChangeStatusSequence() */ public function createChangeStatusSequence($transition, $sender) { return ['before' => [new WorkflowEvent(WorkflowEvent::beforeLeaveStatus(), ['start' => $transition->getStartStatus(), 'sender' => $sender]), new WorkflowEvent(WorkflowEvent::beforeLeaveStatus($transition->getStartStatus()->getId()), ['start' => $transition->getStartStatus(), 'sender' => $sender]), new WorkflowEvent(WorkflowEvent::beforeChangeStatus($transition->getStartStatus()->getId(), $transition->getEndStatus()->getId()), ['start' => $transition->getStartStatus(), 'end' => $transition->getEndStatus(), 'transition' => $transition, 'sender' => $sender]), new WorkflowEvent(WorkflowEvent::beforeEnterStatus(), ['end' => $transition->getEndStatus(), 'sender' => $sender]), new WorkflowEvent(WorkflowEvent::beforeEnterStatus($transition->getEndStatus()->getId()), ['end' => $transition->getEndStatus(), 'sender' => $sender])], 'after' => [new WorkflowEvent(WorkflowEvent::afterLeaveStatus(), ['start' => $transition->getStartStatus(), 'sender' => $sender]), new WorkflowEvent(WorkflowEvent::afterLeaveStatus($transition->getStartStatus()->getId()), ['start' => $transition->getStartStatus(), 'sender' => $sender]), new WorkflowEvent(WorkflowEvent::afterChangeStatus($transition->getStartStatus()->getId(), $transition->getEndStatus()->getId()), ['start' => $transition->getStartStatus(), 'end' => $transition->getEndStatus(), 'transition' => $transition, 'sender' => $sender]), new WorkflowEvent(WorkflowEvent::afterEnterStatus(), ['end' => $transition->getEndStatus(), 'sender' => $sender]), new WorkflowEvent(WorkflowEvent::afterEnterStatus($transition->getEndStatus()->getId()), ['end' => $transition->getEndStatus(), 'sender' => $sender])]]; }