在另一个 Yii2 应用程序中,我使用了一个名为navatech/yii2-roxymce
的包将textarea
替换为 HTMl 可编辑框。在当前的应用程序中,我不想使用它,而我想保持所有内容易于重用。换句话说,我想要一个条件检查说,如果安装了包,请调用它,如果没有调用普通的活动表单文本区域。
我已经尝试了如下class_exists
:
<?php
// _form.php code
use yiihelpersHtml;
use yiiwidgetsActiveForm;
use yiihelpersUrl;
use navatechroxymcewidgetsRoxyMceWidget;
......
<?php if (class_exists('RoxyMceWidget')): ?>
<?= RoxyMceWidget::widget([
'model' => $model, //your Model, REQUIRED
'attribute' => 'content', //attribute name of your model, REQUIRED if using 'model' section
'name' => 'Post[content]', //default name of textarea which will be auto generated, NOT REQUIRED if using 'model' section
'value' => isset($_POST['Post']['content']) ? $_POST['Post']['content'] : $model->content, //default value of current textarea, NOT REQUIRED
'action' => Url::to(['roxymce/default']), //default roxymce action route, NOT REQUIRED
'options' => [//TinyMce options, NOT REQUIRED, see https://www.tinymce.com/docs/
'title' => 'RoxyMCE',//title of roxymce dialog, NOT REQUIRED
'height' => 450,
],
]);?>
<?php else: ?>
<?= $form->field($model, 'content')->textarea(['rows' => 14]);?>
<?php endif; ?>
.....
但是,在使用 composer 安装navatechroxymcewidgetsRoxyMceWidget
后,条件语句给出相同的结果。 即打印普通的活动表单文本区域,因此尽管正在安装小部件,class_exists
似乎总是返回错误。
有没有其他正确的方法来检查是否找到包裹?
必须为类提供完全限定的命名空间。
class_exists('navatechroxymcewidgetsRoxyMceWidget')
使用 prs4 时,您必须包含命名空间:
class_exists('navatechroxymcewidgetsRoxyMceWidget')
或:
class_exists(RoxyMceWidget::className())
是否已在 use 语句中定义。
更新:您应该使用最新版本的yii2-roxymce
,当前版本为2.0.0.1