ホームページ  >  記事  >  バックエンド開発  >  Yii はビュー内に変数を作成し (PHP コードを保護)、js ファイル内で以前に作成した変数のコード インスタンスを呼び出します。

Yii はビュー内に変数を作成し (PHP コードを保護)、js ファイル内で以前に作成した変数のコード インスタンスを呼び出します。

PHP中文网
PHP中文网オリジナル
2017-03-30 14:51:051360ブラウズ

まずコードに移動します:

これはviewsite/reg.phpです

    $cs = Yii::app()->getClientScript();
    $cs->registerScriptFile('/js/verify-code.js',CClientScript::POS_END);

これはlayout/main.phpです

$commonValue = json_encode([
            'SmsVerifycodeUrl' => Yii::app()->createAbsoluteUrl('site/SendSmsCode'),
            'WaitSecond' => WapMember::DEFAULT_INTERVAL,
    ]);
Yii::app()->clientScript->registerScript("var commonValue = $commonValue",CClientScript::POS_END);

これはverify-code.jsファイルです

var initSecond = (typeof CommonValue.WaitSecond) == "undefined" ? 180 : CommonValue.WaitSecond,
    waitSecond =initSecond,
    SmsVerifyCode = function(btn, form) { this.getBtn = btn; this.form = form;},
       SCF;

Chromeブラウザで報告されたエラーです
verify-code.js:1 Uncaught ReferenceError: CommonValue is not defined

返信内容:

最終的に判明:

Yii::app()->clientScript->registerScript("var commonValue = $commonValue",CClientScript::POS_END);

を書く際にパラメータが抜けていることが判明しました。結果は次のようになります:

Yii::app()->clientScript->registerScript('commonValue',"var commonValue = $commonValue",CClientScript::POS_END);

CommonValue の POS_END は単に POS_HEAD に調整されます。

または、$commonValue が main.php の render('reg.php') の前に配置されていることを確認してください。2 つの registerScript が順番に配置されています

ps:

verify-code.js は、このファイル内のグローバルな変数参照する代わりに関数オブジェクトを返すことができますか?
私は以前にそのようなコードを保守したことがありますが、それは嫌です

上記は、Yii がビュー内で変数を作成し (PHP コードを保護)、js ファイル内で以前に作成した変数を呼び出すコード例です。PHP の関連コンテンツに注目してください。中国語のウェブサイト (www.php.cn)!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。