我如何在 yii2 的视图文件中访问我的自定义小部件

How can i access my custom widget in view file in yii2

这是我的自定义小部件 (vendor\sliderWidget.php):

    <?php
namespace Mostafa;
use yii;

  class sliderWidget extends \yii\base\Widget {
    public function init() {
      parent::init();
 ...

但是当我尝试在视图文件中使用这个小部件时 (frontend\views\site\index.php):

<?php

use yii\helpers\Html;
use kartik\icons\Icon;
 ?>

<?= \Mostafa\sliderWidget::widget();?>
 ...

我得到了

PHP Fatal Error – yii\base\ErrorException Class 'Mostafa\sliderWidget' not found error

看来问题出在自动加载上。我该如何解决这个问题。

将带有小部件的文件夹放在 vendor 文件夹之外并使用 PSR-4 标准。

如果这是基于基本项目模板,您可以将其放在根文件夹中,如 /Mostafa。 如果这是基于高级项目模板,您可以将它放在应用程序的文件夹之一中,例如 /frontend/Mostafa.

Mostafa 文件夹中的小部件 class 正确命名为 SliderWidget.php 并正确命名内部的 class (SliderWidget)。

在此文件中使用正确的命名空间:对于 Basic,它是 namespace app\Mostafa;,对于示例中的 Advanced,它是 namespace frontend\Mostafa;

现在您可以正常使用这个插件了。对于基本:

<?= \app\Mostafa\SliderWidget::widget() ?>

对于示例中的高级:

<?= \frontend\Mostafa\SliderWidget::widget() ?>