2016-11-28 38 views
1

別のYii2アプリケーションではtextareaをHTMl編集可能ボックスに置き換えるためにnavatech/yii2-roxymceというパッケージを使用しました。現在のアプリケーションでは、すべてを簡単に再利用できるようにしたいが、私はそれを使用したくない。言い換えれば、私は条件付きのチェックは、パッケージがインストールされている場合は、通常のアクティブなフォームのテキストエリアを呼び出す場合はそれを呼び出すことを言う。私は、次のようなclass_existsを試してみましたYii2パッケージが定義されているかどうかをチェック

は:

<?php 
// _form.php code 
use yii\helpers\Html; 
use yii\widgets\ActiveForm; 
use yii\helpers\Url; 
use navatech\roxymce\widgets\RoxyMceWidget; 
...... 
<?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; ?> 
..... 

しかし、作曲を使用してnavatech\roxymce\widgets\RoxyMceWidgetのインストール後に、条件文は同じ結果を与えます。すなわち通常のアクティブフォームのテキストエリアを印刷するので、class_existsはウィジェットがインストールされている間に常にfalseを返すようです。

パッケージが見つかったかどうかを確認する他の正しい方法はありますか?

答えて

2

クラスの完全修飾ネームスペースを指定する必要があります。名前空間を含める必要がありprs4と

class_exists('navatech\roxymce\widgets\RoxyMceWidget') 
+0

ですが、それはすでに 'use'文で定義され、yii2-roxymceの最新のバージョンを使用する必要がありますか? – SaidbakR

+1

'class_exists'はそれを知らない。 – Bizley

0

class_exists('navatech\roxymce\widgets\RoxyMceWidget')

か:

class_exists(RoxyMceWidget::className())それがすでに使用文で定義されている場合。


は更新:あなたは、現在は2.0.0.1

+0

'className'の2番目の解決策は完全な解決策ではありません。 'use'で定義されたクラスがインストールされていないとします。この場合、エラーメッセージが生成されます。 – SaidbakR

+1

あなたは正しいです。だから 'class_exists( 'navatech \ roxymce \ widgets \ RoxyMceWidget')'は解決策です –

関連する問題