سؤال

لقد قضيت اليومين الماضيين في محاولة لمعرفة كيفية تمرير المتغيرات من وحدة تحكم بلدي لنموذج بلدي.أحاول إنشاء مرشح منتج بسيط للغاية يأخذ بعض المدخلات ويبني مجموعة منتجات بناء عليها.لدي شكل بنيت وأنا باستخدام أجاكس:

jQuery.ajax(
    {
        url: formURL,
        type: "POST",
        data: {
            location : location,
            width : width
        },
        success: function() {
            alert('form good');
        },
        error: function() {
            alert('form issue');
        } 
    });

للنشر إلى وحدة التحكم الخاصة بي:

    class Custom_GateSelector_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction() 
    {
        $gate_location = $this->getRequest()->getPost('location');
        $gate_width    = $this->getRequest()->getPost('width');
    }
}

ثم أنا في حاجة إلى اثنين من المتغيرات هناك لتكون متاحة في نموذج بلدي:

    class Custom_GateSelector_Model_Products extends Mage_Catalog_Model_Product
{
  public function getItemsCollection()
  {
      $topStairs = 'yes';
      $gateWidth = 29.00;
      $rootcatID = Mage::app()->getStore()->getRootCategoryId();

      $collection = $this->getCollection()
          ->addAttributeToSelect('*')
          ->addAttributeToFilter('gate_max_width', array('gt' => $gateWidth))
          ->addAttributeToFilter('category_id', array('in' => $rootcatID))
          ->addAttributeToFilter('type_id', array('eq' => 'simple'))                                         
          ->addAttributeToSort('price', 'DESC')                                                               
          ->addAttributeToFilter('status', array('eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED)); 

      return $collection;
  }
} 

لقد حاولت Mage::register('gate-location', $gate_location); الطريقة ولكن لا يمكنني الوصول إليها في فئة النموذج من سبب ما.

هل كانت مفيدة؟

المحلول 3

لذلك بعد أسبوع طويل من سحب شعري، جئت لإدراك أن أفضل طريقة لتمرير المعلومات من وحدة تحكم إلى نموذج لا.بفضل بن @ Sonassi للإجابة على سؤال غير مرتبط جعلني أدرك أنه يمكنني استخدام

giveacodicetagpre.

للحصول على متغير النشر داخل عمل النموذج للوصول إلى ما أحتاج إليه.

نصائح أخرى

لذلك كنت تريد أساسا لتمرير متغير من فئة واحدة إلى أخرى?

إذا كان هذا هو ما تريد تحقيقه, لماذا لا تمر بها كمعلمات طريقة? getItemsCollection هل لم يتم تعريف إيرك في أي فئة الأصل - لذلك أنت حر في تغيير توقيعه:

public function getItemsCollection($gateLocation, $gateWidth)
{
    // …
}

إذا كنت ترغب في تجنب ذلك لأي سبب من الأسباب ، فلا يزال بإمكانك تعديل المجموعة بعد ذلك:

$collection = $gsProduct->getItemsCollection();
$collection->addAttributeToFilter('gate_max_width', array('gt' => $gateWidth))

إذا كنت سوف النموذج

Custom_GateSelector_Model_Products على هذا indexAction() فسيحصل على تلك المعلمات على الطراز.

لذلك، اتصل أدناه الوظائف على getitemscollection

giveacodicetagpre.

وفقا لنظام Magento، لا يمكنك الحصول على وحدة التحكم الحالية لا يمكن الوصول إلى صفحة أخرى

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top