我正在使用Yii2并一直在阅读有关themingtheme inheritance的信息;但是有一些问题:

考虑以下示例:

'view' => [
    'theme' => [
        'pathMap' => [
            '@app/views' => [
                '@app/themes/current',
                '@app/themes/default',
            ],
        ],
        'baseUrl' => '@web/themes/current',
        'basePath' => '@webroot/themes/current',
    ],
],

现在,假设我们请求主题文件foo;据我了解,这将首先按以下顺序查找:
  • @app/themes/current/foo.php
  • @app/themes/default/foo.php
  • @app/views/foo.php

  • 现在想象在foo.php主题中找不到@app/themes/current/,因此它将使用在@app/themes/default/中找到的文件。

    现在,考虑到baseUrlbasePath设置,我有点困惑在这些情况下如何使用它们。

    现在,假设foo.php引用了文件内的图像文件,这是否还会尝试查找@web/themes/current/images/myImage.jpg而不是@web/themes/default/images/myImage.jpg

    最佳答案

    在这种情况下,basePath毫无值(value)。因为basePath仅在以下情况下适用pathMap为空。basePath并非后备,它是pathMap的快捷方式,只有一个主题时可以快速使用。

    'pathMap' => [
        '@app/views' => [
             '@app/themes/current/views',
        ],
    ],
    

    相当于:
    'basePath' => '@app/themes/current',
    

    (Yii知道文件夹@app/themes/current/views存在)baseUrl:当您在 View 文件中调用$this->theme->getBaseUrl()时返回。多主题的值(value)降低。
    关于静态文件的后备。主题后备不是为此目的而设计的。

    关于php - 确定使用回退时Yii2如何查找主题资源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32047784/

    10-13 01:34