[HttpFoundation] Allow flash messages to have multiple messages per type.
This commit is contained in:
parent
85d40686ab
commit
84c2e3caf7
@ -62,7 +62,7 @@ class SessionController extends ContainerAware
|
|||||||
$session = $request->getSession();
|
$session = $request->getSession();
|
||||||
|
|
||||||
if ($session->getFlashBag()->has('notice')) {
|
if ($session->getFlashBag()->has('notice')) {
|
||||||
$output = $session->getFlashBag()->get('notice');
|
list($output) = $session->getFlashBag()->get('notice');
|
||||||
} else {
|
} else {
|
||||||
$output = 'No flash was set.';
|
$output = 'No flash was set.';
|
||||||
}
|
}
|
||||||
|
@ -42,13 +42,13 @@ class SessionHelperTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
$this->assertTrue($helper->hasFlash('notice'));
|
$this->assertTrue($helper->hasFlash('notice'));
|
||||||
|
|
||||||
$this->assertEquals('bar', $helper->getFlash('notice'));
|
$this->assertEquals(array('bar'), $helper->getFlash('notice'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetFlashes()
|
public function testGetFlashes()
|
||||||
{
|
{
|
||||||
$helper = new SessionHelper($this->request);
|
$helper = new SessionHelper($this->request);
|
||||||
$this->assertEquals(array('notice' => 'bar'), $helper->getFlashes());
|
$this->assertEquals(array('notice' => array('bar')), $helper->getFlashes());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGet()
|
public function testGet()
|
||||||
|
@ -75,7 +75,15 @@ class AutoExpireFlashBag implements FlashBagInterface
|
|||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
public function peek($type, $default = null)
|
public function add($type, $message)
|
||||||
|
{
|
||||||
|
$this->flashes['new'][$type][] = $message;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function peek($type, array $default = array())
|
||||||
{
|
{
|
||||||
return $this->has($type) ? $this->flashes['display'][$type] : $default;
|
return $this->has($type) ? $this->flashes['display'][$type] : $default;
|
||||||
}
|
}
|
||||||
@ -91,7 +99,7 @@ class AutoExpireFlashBag implements FlashBagInterface
|
|||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
public function get($type, $default = null)
|
public function get($type, array $default = array())
|
||||||
{
|
{
|
||||||
$return = $default;
|
$return = $default;
|
||||||
|
|
||||||
@ -129,9 +137,10 @@ class AutoExpireFlashBag implements FlashBagInterface
|
|||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
public function set($type, $message)
|
public function set($type, $messages)
|
||||||
{
|
{
|
||||||
$this->flashes['new'][$type] = $message;
|
$messages = (array)$messages;
|
||||||
|
$this->flashes['new'][$type] = $messages;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -139,7 +148,7 @@ class AutoExpireFlashBag implements FlashBagInterface
|
|||||||
*/
|
*/
|
||||||
public function has($type)
|
public function has($type)
|
||||||
{
|
{
|
||||||
return array_key_exists($type, $this->flashes['display']);
|
return array_key_exists($type, $this->flashes['display']) && $this->flashes['display'][$type];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -68,7 +68,15 @@ class FlashBag implements FlashBagInterface
|
|||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
public function peek($type, $default = null)
|
public function add($type, $message)
|
||||||
|
{
|
||||||
|
$this->flashes[$type][] = $message;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function peek($type, array $default =array())
|
||||||
{
|
{
|
||||||
return $this->has($type) ? $this->flashes[$type] : $default;
|
return $this->has($type) ? $this->flashes[$type] : $default;
|
||||||
}
|
}
|
||||||
@ -84,7 +92,7 @@ class FlashBag implements FlashBagInterface
|
|||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
public function get($type, $default = null)
|
public function get($type, array $default = array())
|
||||||
{
|
{
|
||||||
if (!$this->has($type)) {
|
if (!$this->has($type)) {
|
||||||
return $default;
|
return $default;
|
||||||
@ -111,9 +119,10 @@ class FlashBag implements FlashBagInterface
|
|||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
public function set($type, $message)
|
public function set($type, $messages)
|
||||||
{
|
{
|
||||||
$this->flashes[$type] = $message;
|
$messages = (array)$messages;
|
||||||
|
$this->flashes[$type] = $messages;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -129,7 +138,7 @@ class FlashBag implements FlashBagInterface
|
|||||||
*/
|
*/
|
||||||
public function has($type)
|
public function has($type)
|
||||||
{
|
{
|
||||||
return array_key_exists($type, $this->flashes);
|
return array_key_exists($type, $this->flashes) && $this->flashes[$type];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -32,11 +32,11 @@ interface FlashBagInterface extends SessionBagInterface
|
|||||||
* Gets flash message for a given type.
|
* Gets flash message for a given type.
|
||||||
*
|
*
|
||||||
* @param string $type Message category type.
|
* @param string $type Message category type.
|
||||||
* @param string $default Default value if $type doee not exist.
|
* @param array $default Default value if $type doee not exist.
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function peek($type, $default = null);
|
function peek($type, array $default = array());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets all flash messages.
|
* Gets all flash messages.
|
||||||
@ -49,11 +49,11 @@ interface FlashBagInterface extends SessionBagInterface
|
|||||||
* Gets and clears flash from the stack.
|
* Gets and clears flash from the stack.
|
||||||
*
|
*
|
||||||
* @param string $type
|
* @param string $type
|
||||||
* @param string $default Default value if $type doee not exist.
|
* @param array $default Default value if $type doee not exist.
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function get($type, $default = null);
|
function get($type, array $default = array());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets and clears flashes from the stack.
|
* Gets and clears flashes from the stack.
|
||||||
|
@ -34,7 +34,7 @@ class AutoExpireFlashBagTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
$this->bag = new FlashBag();
|
$this->bag = new FlashBag();
|
||||||
$this->array = array('new' => array('notice' => 'A previous flash message'));
|
$this->array = array('new' => array('notice' => array('A previous flash message')));
|
||||||
$this->bag->initialize($this->array);
|
$this->bag->initialize($this->array);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,16 +47,16 @@ class AutoExpireFlashBagTest extends \PHPUnit_Framework_TestCase
|
|||||||
public function testInitialize()
|
public function testInitialize()
|
||||||
{
|
{
|
||||||
$bag = new FlashBag();
|
$bag = new FlashBag();
|
||||||
$array = array('new' => array('notice' => 'A previous flash message'));
|
$array = array('new' => array('notice' => array('A previous flash message')));
|
||||||
$bag->initialize($array);
|
$bag->initialize($array);
|
||||||
$this->assertEquals('A previous flash message', $bag->peek('notice'));
|
$this->assertEquals(array('A previous flash message'), $bag->peek('notice'));
|
||||||
$array = array('new' => array(
|
$array = array('new' => array(
|
||||||
'notice' => 'Something else',
|
'notice' => array('Something else'),
|
||||||
'error' => 'a',
|
'error' => array('a'),
|
||||||
));
|
));
|
||||||
$bag->initialize($array);
|
$bag->initialize($array);
|
||||||
$this->assertEquals('Something else', $bag->peek('notice'));
|
$this->assertEquals(array('Something else'), $bag->peek('notice'));
|
||||||
$this->assertEquals('a', $bag->peek('error'));
|
$this->assertEquals(array('a'), $bag->peek('error'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetStorageKey()
|
public function testGetStorageKey()
|
||||||
@ -75,16 +75,16 @@ class AutoExpireFlashBagTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
public function testPeek()
|
public function testPeek()
|
||||||
{
|
{
|
||||||
$this->assertNull($this->bag->peek('non_existing'));
|
$this->assertEquals(array(), $this->bag->peek('non_existing'));
|
||||||
$this->assertEquals('default', $this->bag->peek('non_existing', 'default'));
|
$this->assertEquals(array('default'), $this->bag->peek('non_existing', array('default')));
|
||||||
$this->assertEquals('A previous flash message', $this->bag->peek('notice'));
|
$this->assertEquals(array('A previous flash message'), $this->bag->peek('notice'));
|
||||||
$this->assertEquals('A previous flash message', $this->bag->peek('notice'));
|
$this->assertEquals(array('A previous flash message'), $this->bag->peek('notice'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSet()
|
public function testSet()
|
||||||
{
|
{
|
||||||
$this->bag->set('notice', 'Foo');
|
$this->bag->set('notice', 'Foo');
|
||||||
$this->assertNotEquals('Foo', $this->bag->peek('notice'));
|
$this->assertEquals(array('A previous flash message'), $this->bag->peek('notice'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testHas()
|
public function testHas()
|
||||||
@ -123,10 +123,10 @@ class AutoExpireFlashBagTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
public function testGet()
|
public function testGet()
|
||||||
{
|
{
|
||||||
$this->assertNull($this->bag->get('non_existing'));
|
$this->assertEquals(array(), $this->bag->get('non_existing'));
|
||||||
$this->assertEquals('default', $this->bag->get('non_existing', 'default'));
|
$this->assertEquals(array('default'), $this->bag->get('non_existing', array('default')));
|
||||||
$this->assertEquals('A previous flash message', $this->bag->get('notice'));
|
$this->assertEquals(array('A previous flash message'), $this->bag->get('notice'));
|
||||||
$this->assertNull($this->bag->get('notice'));
|
$this->assertEquals(array(), $this->bag->get('notice'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSetAll()
|
public function testSetAll()
|
||||||
@ -141,7 +141,7 @@ class AutoExpireFlashBagTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->bag->set('notice', 'Foo');
|
$this->bag->set('notice', 'Foo');
|
||||||
$this->bag->set('error', 'Bar');
|
$this->bag->set('error', 'Bar');
|
||||||
$this->assertEquals(array(
|
$this->assertEquals(array(
|
||||||
'notice' => 'A previous flash message',
|
'notice' => array('A previous flash message'),
|
||||||
), $this->bag->all()
|
), $this->bag->all()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ class FlashBagTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
$this->bag = new FlashBag();
|
$this->bag = new FlashBag();
|
||||||
$this->array = array('notice' => 'A previous flash message');
|
$this->array = array('notice' => array('A previous flash message'));
|
||||||
$this->bag->initialize($this->array);
|
$this->bag->initialize($this->array);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,18 +71,18 @@ class FlashBagTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
public function testPeek()
|
public function testPeek()
|
||||||
{
|
{
|
||||||
$this->assertNull($this->bag->peek('non_existing'));
|
$this->assertEquals(array(), $this->bag->peek('non_existing'));
|
||||||
$this->assertEquals('default', $this->bag->peek('not_existing', 'default'));
|
$this->assertEquals(array('default'), $this->bag->peek('not_existing', array('default')));
|
||||||
$this->assertEquals('A previous flash message', $this->bag->peek('notice'));
|
$this->assertEquals(array('A previous flash message'), $this->bag->peek('notice'));
|
||||||
$this->assertEquals('A previous flash message', $this->bag->peek('notice'));
|
$this->assertEquals(array('A previous flash message'), $this->bag->peek('notice'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGet()
|
public function testGet()
|
||||||
{
|
{
|
||||||
$this->assertNull($this->bag->get('non_existing'));
|
$this->assertEquals(array(), $this->bag->get('non_existing'));
|
||||||
$this->assertEquals('default', $this->bag->get('not_existing', 'default'));
|
$this->assertEquals(array('default'), $this->bag->get('not_existing', array('default')));
|
||||||
$this->assertEquals('A previous flash message', $this->bag->get('notice'));
|
$this->assertEquals(array('A previous flash message'), $this->bag->get('notice'));
|
||||||
$this->assertNull($this->bag->get('notice'));
|
$this->assertEquals(array(), $this->bag->get('notice'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testAll()
|
public function testAll()
|
||||||
@ -90,8 +90,8 @@ class FlashBagTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->bag->set('notice', 'Foo');
|
$this->bag->set('notice', 'Foo');
|
||||||
$this->bag->set('error', 'Bar');
|
$this->bag->set('error', 'Bar');
|
||||||
$this->assertEquals(array(
|
$this->assertEquals(array(
|
||||||
'notice' => 'Foo',
|
'notice' => array('Foo'),
|
||||||
'error' => 'Bar'), $this->bag->all()
|
'error' => array('Bar')), $this->bag->all()
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals(array(), $this->bag->all());
|
$this->assertEquals(array(), $this->bag->all());
|
||||||
@ -101,7 +101,7 @@ class FlashBagTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$this->bag->set('notice', 'Foo');
|
$this->bag->set('notice', 'Foo');
|
||||||
$this->bag->set('notice', 'Bar');
|
$this->bag->set('notice', 'Bar');
|
||||||
$this->assertEquals('Bar', $this->bag->peek('notice'));
|
$this->assertEquals(array('Bar'), $this->bag->peek('notice'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testHas()
|
public function testHas()
|
||||||
@ -120,15 +120,15 @@ class FlashBagTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->bag->set('notice', 'Foo');
|
$this->bag->set('notice', 'Foo');
|
||||||
$this->bag->set('error', 'Bar');
|
$this->bag->set('error', 'Bar');
|
||||||
$this->assertEquals(array(
|
$this->assertEquals(array(
|
||||||
'notice' => 'Foo',
|
'notice' => array('Foo'),
|
||||||
'error' => 'Bar',
|
'error' => array('Bar'),
|
||||||
), $this->bag->peekAll()
|
), $this->bag->peekAll()
|
||||||
);
|
);
|
||||||
$this->assertTrue($this->bag->has('notice'));
|
$this->assertTrue($this->bag->has('notice'));
|
||||||
$this->assertTrue($this->bag->has('error'));
|
$this->assertTrue($this->bag->has('error'));
|
||||||
$this->assertEquals(array(
|
$this->assertEquals(array(
|
||||||
'notice' => 'Foo',
|
'notice' => array('Foo'),
|
||||||
'error' => 'Bar',
|
'error' => array('Bar'),
|
||||||
), $this->bag->peekAll()
|
), $this->bag->peekAll()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -81,7 +81,7 @@ class MockFileSessionStorageTest extends \PHPUnit_Framework_TestCase
|
|||||||
$storage->start();
|
$storage->start();
|
||||||
$this->assertEquals('108', $storage->getBag('attributes')->get('new'));
|
$this->assertEquals('108', $storage->getBag('attributes')->get('new'));
|
||||||
$this->assertTrue($storage->getBag('flashes')->has('newkey'));
|
$this->assertTrue($storage->getBag('flashes')->has('newkey'));
|
||||||
$this->assertEquals('test', $storage->getBag('flashes')->peek('newkey'));
|
$this->assertEquals(array('test'), $storage->getBag('flashes')->peek('newkey'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMultipleInstances()
|
public function testMultipleInstances()
|
||||||
|
Reference in New Issue
Block a user