mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-06 07:58:12 +08:00
Fixes #6488: Support changing yii\base\Theme::basePath during runtime
This commit is contained in:
@ -9,6 +9,7 @@ Yii Framework 2 Change Log
|
|||||||
- Enh #6247: Logger and error handler are now using slightly less memory (stepanselyuk, samdark)
|
- Enh #6247: Logger and error handler are now using slightly less memory (stepanselyuk, samdark)
|
||||||
- Enh #6434: Added `yii\behaviors\SluggableBehavior::immutable` to support keeping the generated slug unchanged (trntv)
|
- Enh #6434: Added `yii\behaviors\SluggableBehavior::immutable` to support keeping the generated slug unchanged (trntv)
|
||||||
- Enh #6467: `ActiveForm` will scroll to the nearest visible element when the first error input is hidden (newartix)
|
- Enh #6467: `ActiveForm` will scroll to the nearest visible element when the first error input is hidden (newartix)
|
||||||
|
- Enh #6488: Support changing `yii\base\Theme::basePath` during runtime (qiangxue)
|
||||||
- Chg #6427: In case of invalid route web application now throws exception with "Page not found" instead of "Invalid Route" (cebe, samdark)
|
- Chg #6427: In case of invalid route web application now throws exception with "Page not found" instead of "Invalid Route" (cebe, samdark)
|
||||||
|
|
||||||
2.0.1 December 07, 2014
|
2.0.1 December 07, 2014
|
||||||
|
|||||||
@ -73,29 +73,12 @@ class Theme extends Component
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var array the mapping between view directories and their corresponding themed versions.
|
* @var array the mapping between view directories and their corresponding themed versions.
|
||||||
* If not set, it will be initialized as a mapping from [[Application::basePath]] to [[basePath]].
|
|
||||||
* This property is used by [[applyTo()]] when a view is trying to apply the theme.
|
* This property is used by [[applyTo()]] when a view is trying to apply the theme.
|
||||||
* Path aliases can be used when specifying directories.
|
* Path aliases can be used when specifying directories.
|
||||||
|
* If this property is empty or not set, a mapping [[Application::basePath]] to [[basePath]] will be used.
|
||||||
*/
|
*/
|
||||||
public $pathMap;
|
public $pathMap;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initializes the theme.
|
|
||||||
* @throws InvalidConfigException if [[basePath]] is not set.
|
|
||||||
*/
|
|
||||||
public function init()
|
|
||||||
{
|
|
||||||
parent::init();
|
|
||||||
|
|
||||||
if (empty($this->pathMap)) {
|
|
||||||
if (($basePath = $this->getBasePath()) === null) {
|
|
||||||
throw new InvalidConfigException('The "basePath" property must be set.');
|
|
||||||
}
|
|
||||||
$this->pathMap = [Yii::$app->getBasePath() => [$basePath]];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private $_baseUrl;
|
private $_baseUrl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -142,11 +125,21 @@ class Theme extends Component
|
|||||||
* If there is no corresponding themed file, the original file will be returned.
|
* If there is no corresponding themed file, the original file will be returned.
|
||||||
* @param string $path the file to be themed
|
* @param string $path the file to be themed
|
||||||
* @return string the themed file, or the original file if the themed version is not available.
|
* @return string the themed file, or the original file if the themed version is not available.
|
||||||
|
* @throws InvalidConfigException if [[basePath]] is not set
|
||||||
*/
|
*/
|
||||||
public function applyTo($path)
|
public function applyTo($path)
|
||||||
{
|
{
|
||||||
|
$pathMap = $this->pathMap;
|
||||||
|
if (empty($pathMap)) {
|
||||||
|
if (($basePath = $this->getBasePath()) === null) {
|
||||||
|
throw new InvalidConfigException('The "basePath" property must be set.');
|
||||||
|
}
|
||||||
|
$pathMap = [Yii::$app->getBasePath() => [$basePath]];
|
||||||
|
}
|
||||||
|
|
||||||
$path = FileHelper::normalizePath($path);
|
$path = FileHelper::normalizePath($path);
|
||||||
foreach ($this->pathMap as $from => $tos) {
|
|
||||||
|
foreach ($pathMap as $from => $tos) {
|
||||||
$from = FileHelper::normalizePath(Yii::getAlias($from)) . DIRECTORY_SEPARATOR;
|
$from = FileHelper::normalizePath(Yii::getAlias($from)) . DIRECTORY_SEPARATOR;
|
||||||
if (strpos($path, $from) === 0) {
|
if (strpos($path, $from) === 0) {
|
||||||
$n = strlen($from);
|
$n = strlen($from);
|
||||||
|
|||||||
Reference in New Issue
Block a user