2016-10-04 5 views
0

私のモデルクラスのカスタム検証関数です。私はJavaScriptのコードを使用する必要があります。そのために私はregisterJs機能を使用するが、私はエラーを取得しています: - は未定義の関数にregisterJs()Yii2モデルクラスでjavascriptを使用するには?

を呼び出すと、私はまたView::registerJs()、Viewクラスのつまりを含めることによって、それを呼び出してみましたが、それはまた

Non-static method yii\web\View::registerJs() should not be called statically, assuming $this from incompatible context 

どのように呼ばれるエラーを与えていますYii2モデルクラスのユーザーJavascriptを使用できますか。

編集: 私はモバイル番号の検証とその関数をモデルのルールセクションから呼び出すためのカスタム関数を作成しました。今私はその関数でjavascriptコードを使用したい。それを達成する他の方法はありますか?メソッドが静的ではないことを事前

+2

あなたがしようとしているのは、Yii 2で使用されているMVCパターンに違反しているということです。モデルはViewの一部を生成すべきではないので、そこから 'registerJs()'メソッドに簡単にアクセスできません。 @Bizley。 – Bizley

+0

私は、モバイル番号の検証とその関数をモデルのルールセクションから呼び出すためのカスタム関数を作成しました。今私はその関数でjavascriptコードを使用したい。それを達成する他の方法はありますか? –

+0

この場合、説明のために質問にあなたのコメントを追加してください。クライアント側の検証をモデルルールに追加する方法の詳細については、http://www.yiiframework.com/doc-2.0/guide-input-validation.html#using-client-side-validationを参照してください。 – Bizley

答えて

1

感謝。フレームワークのview.phpを開くと、実装をチェックアウトすることができます。

public function registerJs($js, $position = self::POS_READY, $key = null){.. 
    } 

例外は明らかにそれが静的に宣言されていないためshould not be called staticallyことに言及。

私は、このメソッドを呼び出す実装のいくつか見ている:基本的機能の一つの特定のJSファイルをロード

$view->registerJs($js, $view::POS_END); 

0

モデルでJavascriptを使用することはお勧めできません。あなたがその道を行くなら、おそらくしばらくしてから、あなたはアプリのアーキテクチャに大きな問題に向かうでしょう。

コントローラ内でモデルを呼び出し、Javascriptコードでコントローラとやりとりすることをお勧めします。

関連する問題