Bir magento denetleyicisini geçersiz kılarım, işlem yapmadan önce, isteğin Ajax tarafından gönderilip gönderilmediğini öğrenmenin bir yolu var mı?Ajax tarafından istek gönderilip gönderilmediğini kontrol edin veya
Teşekkür
Bir magento denetleyicisini geçersiz kılarım, işlem yapmadan önce, isteğin Ajax tarafından gönderilip gönderilmediğini öğrenmenin bir yolu var mı?Ajax tarafından istek gönderilip gönderilmediğini kontrol edin veya
Teşekkür
Bunu kullanabilirsiniz:
if ($this->getRequest()->getParam('ajax')){
//Ajax related code
} else {
//Non ajax
}
Hemen asla saf PHP kullanmak ve bakım:
public function isAjax()
{
return (boolean)((isset($_SERVER['HTTP_X_REQUESTED_WITH'])) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'));
}
Bu insanlar, ZFW, Magentoo, vb. Gibi farklı çerçeveler kullanan bu insanları asla anlayamayacağım, U her zaman bunun için farklı sözdizimi hatırlamalıdır - NEDEN ?! - Sadece bir kod satırı kullanın ve her yerde = (daha hızlı, daha güvenli) çalıştırılacak =) –
Biri gereksiz koddan kaçınmak için kullanın. –
Redundancy daha çok FrameWork parçalarıdır) Sarmalayıcılar, tembel yerleştirme objeleri, birden fazla kalıtım için tek bir çağrı için bu '$ this-> getRequest() -> getParam ('ajax')' - kullanıcıların her çalıştırıldığında kaç kod çalıştırdığını hayal edin Uygulamanızın farklı bölümleri - ajax veya başka bir şey olup olmadığını belirlemek için bir mantık var, getRequest() (Requests nesnesi) örneği ve bunun gibi ... sadece bu işlevsellik için 'return (boolean) ((isset ($ _ SERVER) ['HTTP_X_REQUESTED_WITH'])) && ($ _SERVER ['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')) –
Im yanılmıyorsam, magento tarafından bunun, Zend Framework kullanılarak yazılmışsa İstek nesnesini kullanarak,
if($this->getRequest()->isXmlHttpRequest()){
// ajax
} else {
// not ajax
}
http://framework.zend.com/manual/en/zend.controller.request.html#zend.controller.request.http.ajax
İyi şanslar!
Magento, istekleri için Zend_Controller_Request_Http
sınıfını kullanır.
Sen
if ($this->getRequest()->isXmlHttpRequest()) {
// is Ajax request
}
Ajax isteklerini bu şekilde algılamak için kullanabilirsiniz.
en az
ZF docs göre HTTP_X_REQUESTED_WITH
başlığını gönderirler.
Not olsa da, "Ajax istekleri" Bana XmlHttpRequest (ve gizli s gibi teknikler kullanılarak değil veya Flash yükleyenlerden veya benzeri) kullanılarak gönderilen istekleri anlamına gelir.
Bu subjektif olduğundan ve algınız farklı olabileceğinden: Magento'nun kendisi “Ajax” ı benden daha uzun bir şekilde tanımlamaktadır. Bu ihtiyaçlarımızı karşılayabilecek (veya olmayabilir) daha iyi, "Ajax" nin kişisel algı bağlı
public function isAjax()
{
if ($this->isXmlHttpRequest()) {
return true;
}
if ($this->getParam('ajax') || $this->getParam('isAjax')) {
return true;
}
return false;
}
: Mage_Core_Controller_Request_Http::isAjax()
göz at.
Bu bilgiyi bir denetleyiciden başka bir yerde (gözlemci gibi) bilmesi gerekenler için, 'Mage :: app() -> getRequest() -> isXmlHttpRequest() 'işlevini kullanabilirsiniz. – Meogi
Magento dahili olarak her ikisinin bir karışımını kullanır.
Zend Framework'ün isXmlHttpRequest() çek üstbilgisi.magento Mage_ImportExport_Adminhtml_ExportController gibi isXmlHttpRequest() kullanan bazı durumlarda :: getFilterAction() in
public function isXmlHttpRequest(){
return ($this->getHeader('X_REQUESTED_WITH') == 'XMLHttpRequest');
}
Diğer durumlarda
if ($this->getRequest()->isXmlHttpRequest() && $data) {
//code
}
o Mage_Catalog_Product_CompareController gibi parametreyi almak :: removeAction()
if (!$this->getRequest()->getParam('isAjax', false)) {
$this->_redirectReferer();
}
denetler
İstek Mage_Core_Controller_Request_Http :: isAjax() hem
için geçerlidir.public function isAjax()
{
if ($this->isXmlHttpRequest()) {
return true;
}
if ($this->getParam('ajax') || $this->getParam('isAjax')) {
return true;
}
return false;
}
İstek nesnesini isAjax'ı her ikisini de denetledikçe kullanmanızı öneririm.
Üzgünüm, bu yanlış. Magento _do_'un bazı yönetici denetleyicileri kendi formlarıyla bir "ajax" param (ve bazen de bir "ajax" param) gönderdiyse de, bunu yapmayan birçok Magento denetleyicisi (örneğin, checkout) da vardır. Ve olsa bile, varolan bir param ajax, isteğin Ajax kullanılarak gönderilip gönderilmediğine dair bir şey söylemez *. Basit bir 'e sahip olmak, herhangi bir formda, 'if' durumunuzu da gönderimle eşleştirecektir. Bu form POST tarafından sunulsa bile. 'HTTP_X_REQUESTED_WITH' başlıklarının kontrol edilmesi, daha güvenilir olduğunu gösterir. –
Aslında, bu doğru bir yoldur, bazı Magento widget'ları IFrames kullanır ve ajax parametresini ekler, bu yüzden HTTP_X_REQUESTED_WITH'nin işe yaramaz olduğunu kontrol edin .. – skafandri
Bence “Ajax” ı nasıl tanımladığınıza bağlı. Bana göre, sadece XmlHttpRequests. Senin için sadece bir "ajax" params. Magento için her ikisi de ^^ gibi görünüyor, bunu yansıtmak için cevabımı güncelledim. –