Skip to content

Commit 6b6d725

Browse files
committed
Support redirection passing parameters
1 parent 0faffdf commit 6b6d725

File tree

3 files changed

+25
-13
lines changed

3 files changed

+25
-13
lines changed

src/Wizard.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,9 +192,10 @@ public function getActionUrl(string $method, $parameters = [])
192192
*
193193
* @param string|\Ycs77\LaravelWizard\Step|null $step
194194
* @param bool $setLastIndex
195+
* @param array $parameters
195196
* @return \Illuminate\Http\RedirectResponse
196197
*/
197-
public function redirectToStep($step = null, $setLastIndex = true)
198+
public function redirectToStep($step = null, $setLastIndex = true, array $parameters = [])
198199
{
199200
if (is_null($step)) {
200201
$step = $this->stepRepo()->next();
@@ -206,7 +207,7 @@ public function redirectToStep($step = null, $setLastIndex = true)
206207
$this->setLastProcessedIndex($step->index());
207208
}
208209

209-
return redirect($this->getActionUrl('create', [$step->slug()]));
210+
return redirect($this->getActionUrl('create', ['step' => $step->slug(), ...$parameters]));
210211
}
211212

212213
/**

src/Wizardable.php

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Closure;
66
use Illuminate\Http\RedirectResponse;
77
use Illuminate\Http\Request;
8+
use Illuminate\Support\Arr;
89

910
trait Wizardable
1011
{
@@ -31,14 +32,21 @@ trait Wizardable
3132
*/
3233
public function create(Request $request, $step = null)
3334
{
35+
// Get the query parameters.
36+
$parameters = $request->query();
37+
unset($parameters['_trigger']);
38+
$resetParam = Arr::pull($parameters, '_reset');
39+
3440
// Reset the wizard cache when passing the `_reset` query parameter.
35-
if ($request->query('_reset') === '1') {
41+
if ($resetParam === '1') {
3642
$this->wizard()->cache()->clear();
3743

3844
// Clean up the wizard event.
3945
$this->cleanUpWizard($request);
4046

41-
return $this->redirectToLastProcessedStep($request, 0);
47+
return $this->redirectToLastProcessedStep(
48+
$request, 0, $parameters
49+
);
4250
}
4351

4452
// Before wizard step create event.
@@ -51,7 +59,7 @@ public function create(Request $request, $step = null)
5159
// If step is null, redirect to last processed index.
5260
if (is_null($step)) {
5361
return $this->redirectToLastProcessedStep(
54-
$request, $lastProcessedIndex
62+
$request, $lastProcessedIndex, $parameters
5563
);
5664
}
5765

@@ -61,7 +69,7 @@ public function create(Request $request, $step = null)
6169
if ($step->index() !== $lastProcessedIndex) {
6270
// Redirect to last processed step.
6371
return $this->redirectToLastProcessedStep(
64-
$request, $lastProcessedIndex
72+
$request, $lastProcessedIndex, $parameters
6573
);
6674
}
6775

@@ -202,13 +210,14 @@ protected function renderDoneView(Request $request)
202210
*
203211
* @param \Illuminate\Http\Request $request
204212
* @param int $lastProcessedIndex
213+
* @param array $parameters
205214
* @return \Illuminate\Http\RedirectResponse
206215
*/
207-
protected function redirectToLastProcessedStep(Request $request, int $lastProcessedIndex)
216+
protected function redirectToLastProcessedStep(Request $request, int $lastProcessedIndex, array $parameters = [])
208217
{
209218
$lastProcessedStep = $this->wizard()->stepRepo()->get($lastProcessedIndex);
210219

211-
return $this->redirectToStep($lastProcessedStep->slug(), false);
220+
return $this->redirectToStep($lastProcessedStep->slug(), false, $parameters);
212221
}
213222

214223
/**
@@ -227,11 +236,12 @@ protected function canValidate(Request $request)
227236
*
228237
* @param string|\Ycs77\LaravelWizard\Step|null $step
229238
* @param bool $setLastIndex
239+
* @param array $parameters
230240
* @return \Illuminate\Http\RedirectResponse
231241
*/
232-
protected function redirectToStep($step = null, $setLastIndex = true)
242+
protected function redirectToStep($step = null, $setLastIndex = true, array $parameters = [])
233243
{
234-
return $this->wizard()->redirectToStep($step, $setLastIndex);
244+
return $this->wizard()->redirectToStep($step, $setLastIndex, $parameters);
235245
}
236246

237247
/**
@@ -241,11 +251,12 @@ protected function redirectToStep($step = null, $setLastIndex = true)
241251
*
242252
* @param string|\Ycs77\LaravelWizard\Step|null $step
243253
* @param bool $setLastIndex
254+
* @param array $parameters
244255
* @return \Illuminate\Http\RedirectResponse
245256
*/
246-
protected function redirectTo($step = null, $setLastIndex = true)
257+
protected function redirectTo($step = null, $setLastIndex = true, array $parameters = [])
247258
{
248-
return $this->redirectToStep($step, $setLastIndex);
259+
return $this->redirectToStep($step, $setLastIndex, $parameters);
249260
}
250261

251262
/**

tests/Unit/WizardTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ public function testRedirectToOtherStep()
197197
$this->wizard->setStepRepo($stepRepo);
198198

199199
$this->wizard->resolveActionUrlUsing(function (string $method, $parameters = []) {
200-
return url('/wizard/test-wizard/'.$parameters[0]);
200+
return url('/wizard/test-wizard/'.$parameters['step']);
201201
});
202202

203203
// act

0 commit comments

Comments
 (0)