2011-05-03 16 views

cevap

77

üzerinde belirli bir web sitesinin gerekli kapsamını almak için nesneleri doğrudan

Mage::app()->getWebsites(); < in file > app/code/core/Mage/Core/Model/App.php:920 
Mage::app()->getStores(); < in file > app/code/core/Mage/Core/Model/App.php:834 

yinelerler almak için deneyin ya da benzer sorular varsa burada ben nasıl keşfettik Gelecek için

foreach (Mage::app()->getWebsites() as $website) { 
    foreach ($website->getGroups() as $group) { 
     $stores = $group->getStores(); 
     foreach ($stores as $store) { 
      //$store is a store object 
     } 
    } 
} 

saklamak Bu cevaplar 60 saniye içinde. yöntem

grep ' getStores' app/code -rsn 
grep ' getWebsites' app/code -rsn 

İkinci adım kullanım numuneler çekirdek geliştirici olarak kullanmak içindir görmek için grep tanımlandığı gibidir burada Ana ı görmek için yöntem adı önce yöntem adları veya boşluk ile benzer bir yöntem adları için yazılması. Doğru ise, yeniden icat olabilir,

grep '>getWebsites' app/code -rsn 
+0

Çok teşekkür ederim. Bu çok yardımcı oldu! – Blazo

+0

onu oylayın ve sorununuzu çözdüyse başkaları için ileride referans kabul edin –

+0

Evet sorunumu çözdüm. Tekrar teşekkürler, ve nasıl oy vermeliyim, – Blazo

11

Anton'ın cevap: Bunun için ben methodName grep> ekleyin ve bu beni bu yöntemi denir ve dosyaların listesini verir bu bize örnekler aramaya yerleştirmek verecek tekerleği biraz. Bu tür verileri almak için Magento Core'da zaten bir tesis var.

: listeye filtre Ayrıca, işlevine websiteIds, StoreIDs veya storeGroupIds bir dizi geçebilir Mage::getSingleton('adminhtml/system_store')->getStoresStructure() : Bu kullanarak

Tüm web sitelerinin listesini alabilir ve onların "çocuklar" public function getStoresStructure($isAll = false, $storeIds = array(), $groupIds = array(), $websiteIds = array())

Örnek çıkışı:

Array 
(
    [1] => Array 
     (
      [value] => 1 
      [label] => Main Website 
      [children] => Array 
       (
        [1] => Array 
         (
          [value] => 1 
          [label] => Madison Island 
          [children] => Array 
           (
            [1] => Array 
             (
              [value] => 1 
              [label] => English 
             ) 

            [2] => Array 
             (
              [value] => 2 
              [label] => French 
             ) 

            [3] => Array 
             (
              [value] => 3 
              [label] => German 
             ) 

           ) 

         ) 

       ) 

     ) 

) 

var "Mağaza Kapsam" açılır listeleri doldurmak için kullanılan benzer bir tanesidir ve genelinde tüm çoklu seçer yönetici bölümü.

Mage::getSingleton('adminhtml/system_store')->getStoreValuesForForm(false, true)

Array 
(
    [0] => Array 
     (
      [label] => All Store Views 
      [value] => 0 
     ) 

    [1] => Array 
     (
      [label] => Main Website 
      [value] => Array 
       (
       ) 

     ) 

    [2] => Array 
     (
      [label] =>  Madison Island 
      [value] => Array 
       (
        [0] => Array 
         (
          [label] =>  English 
          [value] => 1 
         ) 

        [1] => Array 
         (
          [label] =>  French 
          [value] => 2 
         ) 

        [2] => Array 
         (
          [label] =>  German 
          [value] => 3 
         ) 

       ) 

     ) 

) 

bu keşfetmek için, ben şablon blok sınıfı bunu render sorumlu olduğu öğrenmek için ipuçları üzerinde istediğim verilere sahip Yönetici üzerinde çoklu seçim, sonra döndü bulunduğu: Mage_Adminhtml_Block_Cms_Page_Edit_Form. Bunu bildiğimde, sınıfı codebase'de (app/code/core/Mage/Adminhtml/Block/Cms/Block/Edit/Form.php) buldum ve etiketini arayarak girdi oluşturan parçayı buldum ("Mağaza" Görünüm").

$field =$fieldset->addField('store_id', 'multiselect', array(
    'name'  => 'stores[]', 
    'label'  => Mage::helper('cms')->__('Store View'), 
    'title'  => Mage::helper('cms')->__('Store View'), 
    'required' => true, 
    'values' => Mage::getSingleton('adminhtml/system_store')->getStoreValuesForForm(false, true), 
)); 

Mage::getSingleton('adminhtml/system_store') noktaları aynı zamanda yararlı olabilir benzer çeşitli yöntemler bulunan sınıf Mage_Adminhtml_Model_System_Store için: Bu giriş değerleri temin edilmiştir nasıl gösterdi. Have a look for yourself.

+0

'değerler' => Mage :: getSingleton ('adminhtml/system_store') -> getStoreValuesForForm (false, true), bir tedavi çalıştı! – BENN1TH