【问题标题】:Yii 2: Load a module's view as a partial view on another application viewYii 2:将模块的视图加载为另一个应用程序视图的局部视图
【发布时间】:2015-06-16 16:57:51
【问题描述】:

我需要将模块的视图作为部分视图加载到应用程序的另一个视图中。我在手册中找不到有关如何执行此操作的线索。

视图完全独立于模块:

<?php
    // This is the module's class. Do I need it here?
    use vendor\xxx\cropk\CropK;

/* @var $this yii\web\View */
    $this->title = 'Cropping Test';
?>
<div class="site-index">
    <p>Cropping Test</p>
    <?php
        // ...
    ?>
</div>

我怎样才能做到这一点?

【问题讨论】:

    标签: php yii2 yii-modules


    【解决方案1】:

    查看render's 文档,您有几个选择:

    可以使用以下格式之一指定要呈现的视图:

    • 路径别名(例如“@app/views/site/index”);
    • 应用程序内的绝对路径(例如“//site/index”):视图名称以双斜杠开头。实际的视图文件将在应用程序的视图路径下查找。
    • 模块内的绝对路径(例如“/site/index”):视图名称以 > 单斜杠开头。实际的视图文件将在 $module 的视图路径下查找。
    • 相对路径(例如“索引”):实际视图文件将在 $viewPath 下查找。

    根据这些选择,您似乎将在应用程序中指定绝对路径,或者创建路径别名并使用该语法(应用程序?主站点视图?无论它在哪里。)

    因此,如果您想渲染 {basePath}/views/site/my_partial.php,您可以在视图中执行类似 $this-&gt;renderPartial('//site/my_partial.php'); 的操作。

    【讨论】:

    • 我使用了$cropk = Yii::$app-&gt;runAction("cropk");,将它传递给视图,它也可以正常工作。这应该被认为是非常规的吗?
    猜你喜欢
    • 2017-09-01
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多