-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
[Twig Bridge] A simpler way to retrieve flash messages #21819
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 4 commits
8ab885d
9d471dc
e05144d
e42bd57
27709f3
3a0b379
7acb794
16a794d
c916aee
20eba3f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -145,4 +145,35 @@ public function getDebug() | |
|
||
return $this->debug; | ||
} | ||
|
||
/** | ||
* Returns some or all the existing flash messages: | ||
* * getFlashes() returns all the flash messages | ||
* * getFlashes('notice') returns a simple array with flash messages of that type | ||
* * getFlashes(array('notice', 'error')) returns a nested array of type => messages | ||
* | ||
* @return array | ||
*/ | ||
public function getFlashes($types = null) | ||
{ | ||
// needed to avoid starting the session automatically when looking for flash messages | ||
try { | ||
$session = $this->getSession(); | ||
if (null !== $session && !$session->isStarted()) { | ||
return array(); | ||
} | ||
} catch (\RuntimeException $e) { | ||
return array(); | ||
} | ||
|
||
if (null === $types) { | ||
return $session->getFlashBag()->all(); | ||
} | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You should cast $types to an array first: $type = (array) $type; |
||
if (1 === count($types)) { | ||
return $session->getFlashBag()->get($types[0]); | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Calling this method with a string like There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. oops, @HeahDude commented meanwhile :) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Either way.. offset 0 may not exist :) What about There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oh and it violates the api (more or less) with edit: yeah.. already pointed out by @stof , but it's now advertised with
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @ro0NL good catch about the potential non-existent 0 offset. I've added |
||
|
||
return array_intersect($session->getFlashBag()->all(), array_flip($types)); | ||
} | ||
} |
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This may be too broad, only to bypass
The "app.session" variable is not available.
. I guess it's an edge case :) but maybe do a quick return array() as well if there's no request stack and drop the try/catch.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes ... it's tricky. But avoiding the try...catch would require to duplicate some of the code of this very same class.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would check
requestStack
here, and rely ongetSession
to be available otherwise.