[Session] Used \Locale::setDefault() when the locale is setted
This commit is contained in:
parent
289d35a7ae
commit
72c074a101
@ -37,6 +37,7 @@ class Session implements \Serializable
|
|||||||
$this->storage = $storage;
|
$this->storage = $storage;
|
||||||
$this->defaultLocale = $defaultLocale;
|
$this->defaultLocale = $defaultLocale;
|
||||||
$this->attributes = array('_flash' => array(), '_locale' => $this->getDefaultLocale());
|
$this->attributes = array('_flash' => array(), '_locale' => $this->getDefaultLocale());
|
||||||
|
\Locale::setDefault($this->attributes['_locale']);
|
||||||
$this->started = false;
|
$this->started = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,6 +62,8 @@ class Session implements \Serializable
|
|||||||
$this->attributes['_locale'] = $this->getDefaultLocale();
|
$this->attributes['_locale'] = $this->getDefaultLocale();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
\Locale::setDefault($this->attributes['_locale']);
|
||||||
|
|
||||||
// flag current flash messages to be removed at shutdown
|
// flag current flash messages to be removed at shutdown
|
||||||
$this->oldFlashes = array_flip(array_keys($this->attributes['_flash']));
|
$this->oldFlashes = array_flip(array_keys($this->attributes['_flash']));
|
||||||
|
|
||||||
@ -104,8 +107,12 @@ class Session implements \Serializable
|
|||||||
$this->start();
|
$this->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ('_locale' === $name) {
|
||||||
|
$this->setLocale($value);
|
||||||
|
} else {
|
||||||
$this->attributes[$name] = $value;
|
$this->attributes[$name] = $value;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns attributes.
|
* Returns attributes.
|
||||||
@ -128,6 +135,10 @@ class Session implements \Serializable
|
|||||||
$this->start();
|
$this->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isset($attributes['_locale'])) {
|
||||||
|
$this->setLocale($attributes['_locale']);
|
||||||
|
}
|
||||||
|
|
||||||
$this->attributes = $attributes;
|
$this->attributes = $attributes;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,7 +219,7 @@ class Session implements \Serializable
|
|||||||
$this->start();
|
$this->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->attributes['_locale'] = $locale;
|
\Locale::setDefault($this->attributes['_locale'] = $locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getFlashes()
|
public function getFlashes()
|
||||||
@ -278,6 +289,7 @@ class Session implements \Serializable
|
|||||||
if (isset($this->attributes['_flash'])) {
|
if (isset($this->attributes['_flash'])) {
|
||||||
$this->attributes['_flash'] = array_diff_key($this->attributes['_flash'], $this->oldFlashes);
|
$this->attributes['_flash'] = array_diff_key($this->attributes['_flash'], $this->oldFlashes);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->storage->write('_symfony2', $this->attributes);
|
$this->storage->write('_symfony2', $this->attributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,14 +162,20 @@ class SessionTest extends \PHPUnit_Framework_TestCase
|
|||||||
public function testLocale()
|
public function testLocale()
|
||||||
{
|
{
|
||||||
$this->assertSame('en', $this->session->getLocale(), 'default locale is en');
|
$this->assertSame('en', $this->session->getLocale(), 'default locale is en');
|
||||||
|
$this->assertSame('en', \Locale::getDefault(), '\Locale::getDefault() is en');
|
||||||
|
|
||||||
$this->session->set('_locale','de');
|
$this->session->set('_locale','de');
|
||||||
|
|
||||||
$this->assertSame('de', $this->session->getLocale(), 'locale is de');
|
$this->assertSame('de', $this->session->getLocale(), 'locale is de');
|
||||||
|
$this->assertSame('de', \Locale::getDefault(), '\Locale::getDefault() is de');
|
||||||
|
|
||||||
$this->session = $this->getSession();
|
$this->session = $this->getSession();
|
||||||
$this->session->setLocale('fr');
|
$this->session->setLocale('fr');
|
||||||
$this->assertSame('fr', $this->session->getLocale(), 'locale is fr');
|
$this->assertSame('fr', $this->session->getLocale(), 'locale is fr');
|
||||||
|
$this->assertSame('fr', \Locale::getDefault(), '\Locale::getDefault() is fr');
|
||||||
|
|
||||||
|
$this->session->setAttributes(array('_locale' => 'de'));
|
||||||
|
$this->assertSame('de', $this->session->getLocale(), 'locale is de');
|
||||||
|
$this->assertSame('de', \Locale::getDefault(), '\Locale::getDefault() is de');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetId()
|
public function testGetId()
|
||||||
@ -182,11 +188,14 @@ class SessionTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->session->start();
|
$this->session->start();
|
||||||
|
|
||||||
$this->assertSame('en', $this->session->getLocale());
|
$this->assertSame('en', $this->session->getLocale());
|
||||||
|
$this->assertSame('en', \Locale::getDefault());
|
||||||
|
|
||||||
$this->assertSame(array(), $this->session->getFlashes());
|
$this->assertSame(array(), $this->session->getFlashes());
|
||||||
$this->assertSame(array('_flash' => array(), '_locale' => 'en'), $this->session->getAttributes());
|
$this->assertSame(array('_flash' => array(), '_locale' => 'en'), $this->session->getAttributes());
|
||||||
|
|
||||||
$this->session->start();
|
$this->session->start();
|
||||||
$this->assertSame('en', $this->session->getLocale());
|
$this->assertSame('en', $this->session->getLocale());
|
||||||
|
$this->assertSame('en', \Locale::getDefault());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getSession()
|
protected function getSession()
|
||||||
|
Reference in New Issue
Block a user