PHP değişkeni dayalı javascript fonksiyonu dönüş statüsü için düzgün bir şekilde?

2 Cevap php

Bir CMS benim kendi javascript nesne isimalanlı istiyorum yapıyorum $cms. Bu nesne kullanıcı oturum olup olmadığını durumunu döndüren bir yöntem / işlevi hasIdentity olmalıdır

Ben bu yöntemi / fonksiyon ya başvurmak zorunda kalmadan durumunu dönmek olabilir bir yolu var mı:

  • AJAX
  • küresel var
  • veya PHP içinde aşağıdaki komut dosyası yeniden

Bu yüzden var dosya budur:

var $cms = {
    hasIdentity: function()
    {
        return /* the status provided by PHP */;
    }
};

Bu belki de bir estetik meselesi biraz, ama ben bu başvurmak istemiyorum:

// write this global var;
var $isLoggedIn = false;

var $cms = {
    hasIdentity: function()
    {
        return $isLoggedIn;
    }
};

Ya da bu:

var $cms = {
    hasIdentity: function()
    {
        $isLoggedIn = this.do.some.ajax.call();
        return $isLoggedIn;
    }
};

Belki OOP yaklaşımın bir tür, PHP içinde yazarak $cms nesne inşa gibi bir şey düşünüyordum:

<script type="text/javascript">
  $cms = new $cms( <?php echo $loggedIn ? 'true', 'false' ?> );
</script>

Şimdi, ben JavaScript gibi new anahtar sözcüğünü kullanamazsınız inanıyorum, ama benim drift yakalamak, ve ben bu ile gitmek istediğiniz yere bakın umuyoruz.

2 Cevap

Ayrıca yapabilirdi:

$cms.isLoggedIn = <?php echo $loggedIn ? 'true', 'false' ?>;

Bu sizin $ cm nesne bir yapıcı işlevi değildir çünkü. Öyle olsaydı, sen new bunu mümkün olurdu.

var CMS = function (loggedIn) {
    this.loggedIn = loggedIn;
};

CMS.prototype.hasIdentity = function () {
    return this.loggedIn;
};

$cms = new CMS(<?php echo $loggedIn ? 'true', 'false' ?>);

Sen bir çerez kullanabilirsiniz. hasIdentity yöntemi var ve kullanıcı günlükleri çerez okurken PHP onu ayarlayın ve devlet var dönmek. Çerezleri sahte olabilir çünkü güvenli bir çözüm değil, ama doğru, çok zaten sunucu tarafında her şeyi kontrol ediyoruz? :)