কেবল পঠনযোগ্য পণ্য ব্যাকএন্ড বৈশিষ্ট্য


13

আমি কেবল পড়ার জন্য একটি বিশিষ্ট তৈরি করতে চাই তবে এটি দেখে মনে হচ্ছে এটি সম্ভব নয়।

আমি অ্যাডট্রিবিউট () 'disabled' =>trueবা 'readonly' => true যে কোনও সাফল্যের সাথে পাশ করার চেষ্টা করেছি । আমি ব্যবহার সম্পর্কে কিছু পরামর্শ খুঁজে পেয়েছি setLockedAttributes()তবে কিছু কারণে এটি কাজ করছে না

রেফারেন্স:
Varien_Data_Form_Element_Abstract::serialize($attributes = array(), $valueSeparator='=', $fieldSeparator=' ', $quote='"')


2
স্ট্যাকওভারফ্লোতে প্রশ্নের উত্তর দেওয়া হয়েছিল: স্ট্যাকওভারফ্লো.
ফ্যাবিয়ান ব্ল্যাচসমিড

এই সমাধান কাজ করছে না। (setLockedAttributes)
Fra

2
এটি নয় setLockedAttribute, এটি lockAttribute:-)
ব্যবহারকারী 487772

1
টিম! আপনি হাসলেন! :-D
বেনমার্কগুলি

ধন্যবাদ ছেলেরা ... আমি এটি থ্রেডের আপডেটটি যাচাই করব
ফ্রেব

উত্তর:


11

রেফারেন্সেড এসও নিবন্ধ থেকে - আমি চেষ্টা করেছি এবং এটি প্রকৃতপক্ষে 1.6CE এবং 1.7CE / 1.12EE এ কাজ করে। আমি এখনও পর্যন্ত 1.8 / 1.13 এ চেষ্টা করি নি।

/programming/6384120/magento-read-only-and-hidden-product-attributes

ঠিক আছে, দেখে মনে হচ্ছে এটি সর্বোপরি করা যেতে পারে। catalog_product_load_afterইভেন্টটির জন্য একটি পর্যবেক্ষক যুক্ত করার পরে , শ্রেণীর lockAttributeপদ্ধতিটি Mage_Catalog_Model_Abstractকোনও পণ্য বিশিষ্টটিকে কেবল পঠনযোগ্য করতে ব্যবহৃত হতে পারে। পর্যবেক্ষক পদ্ধতির কোড এখানে:

public function lockAttributes($observer) {
    $event = $observer->getEvent();
    $product = $event->getProduct();
    $product->lockAttribute('attribute_code');
}

1
আমি catalog_product_edit_actionপরিবর্তে ইভেন্টটি নিয়ে যাব ( স্ট্যাকওভারফ্লো.com / a / 7874345 / 394589 ), যদি লকিং কেবল তখনই সম্পাদনা করা হয় যখন।
nevvermind

8

আপনার যদি পণ্য পরিচালনায় এটিকে সম্পাদনযোগ্য না করার পক্ষে যথেষ্ট হয়, তবে ফ্রন্টএন্ড ইনপুট টাইপটি ব্যবহার করুন label, যা ফর্ম ইনপুটটিকে সরল পাঠ্যের সাথে প্রতিস্থাপন করে:

addAttribute($entity, $code, array(
    ...
    'input' => 'label',
    ...
));

নোট করুন যে এটি API বা হেরফের করা POST অনুরোধের মাধ্যমে অ্যাট্রিবিউটটি সংরক্ষণ করা আটকাবে না। এটিকে সুরক্ষিত করতে lockAttribute() উপরের পরামর্শ মতো অতিরিক্ত ব্যবহার করুন ।

এছাড়াও এটি কেবল পাঠ্য প্রকারের বৈশিষ্ট্যের জন্য ভাল লাগে, অন্য ধরণের জন্য আবার lockAttributes" পিছনে " পড়ে বা প্রসারিত করে।


এই কাজ করে শুধুমাত্র যদি অ্যাট্রিবিউট, টেক্সট ধরনের বুলিয়ান জন্য আপনাকে lockattribute দরকার ()
Fra

1
শুভ পয়েন্ট, @ ফ্রে, ধন্যবাদ! আমি এটি উত্তরে যুক্ত করব
ফ্যাবিয়ান শেমংলার

টেক্সট বৈশিষ্ট্যের জন্য এমনকি 1.9.4.1 এ কাজ করছে বলে মনে হচ্ছে না
ওজজিআইই

3

এটি স্থির করার জন্য, আপনি বিকল্পভাবে এর জন্য একটি ইনপুট রেন্ডারার ব্যবহার করতে পারেন। খারাপ দিকটি হ'ল, আপনাকে প্রতিটি ইনপুট টাইপের জন্য এটি করতে হবে এবং প্রতিটি বৈশিষ্ট্যের জন্য সেটআপের মাধ্যমে এটি সেট করতে হবে।

এটি করতে, অ্যাডঅ্যাট্রিবিউট ব্যবহার করার সময় ইনপুট_রেন্ডার কীটি ব্যবহার করুন বা আপডেটআউট্রিবিউট ব্যবহার করার সময় একটি অ্যাট্রিবিউট বা ফ্রন্টএন্ড_ইনপুট_রেন্ডারার ব্যবহার করুন । উদাহরণ:

$installer->addAttribute(Mage_Catalog_Model_Product::ENTITY, 'yourattribute', array(
// ...
// won't be used actually as you use a custom renderer (constant equals to text), but I'm not sure what omitting this will have as effect..
    'input' => Mage_Catalog_Model_Product_Option::OPTION_GROUP_TEXT,
    'input_renderer' => 'yourns_yourmodule/adminhtml_product_helper_form_disabledText',
    'frontend_class' => 'disabled',
    'note' => 'This field is disabled',
// ...
));

তারপরে আপনার শ্রেণীর Yourns_Yourmodule_Block_Adminhtml_Product_Helper_Form_DisabledTextসাহায্যে ইনপুট ক্লাসটি প্রসারিত করুন যা আপনি আসলে ব্যবহার করবেন। একটি পাঠ্য ক্ষেত্রের জন্য এটি হবে Varien_Data_Form_Element_Text। বাছাইয়ের জন্য এটি হবে Varien_Data_Form_Element_Selectএবং তাই।

বৈশিষ্ট্যটি অক্ষম করতে, getHtmlপদ্ধতিটিকে ওভাররাইট করা , বৈশিষ্ট্যটি সেট করা এবং ইনপুট ক্ষেত্রের জন্য প্রকৃত এইচটিএমএল কোডটি ফিরিয়ে দেওয়ার জন্য এখন আপনার কোডটি যুক্ত করুন:

public function getHtml()
{
    // Set disabled
    $this->setReadonly(true, true);
    return parent::getHtml();
}

পদ্ধতিটি lib / Varien / Data / form / Abstract.php এ পাওয়া যাবে যা সমস্ত ফর্ম ইনপুট উপাদান ক্ষেত্রের দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হবে, তাই এটি সর্বদা উপলব্ধ হওয়া উচিত।

/**
 * Disable elements
 *
 * @param boolean $readonly
 * @param boolean $useDisabled
 * @return Varien_Data_Form_Abstract
 */
public function setReadonly($readonly, $useDisabled = false)
{
    if ($useDisabled) {
        $this->setDisabled($readonly);
        $this->setData('readonly_disabled', $readonly);
    } else {
        $this->setData('readonly', $readonly);
    }
    foreach ($this->getElements() as $element) {
        $element->setReadonly($readonly, $useDisabled);
    }

    return $this;
}

অস্বীকৃত ইনপুট সম্ভাবনাটি কল্পনা করার জন্য উপরের মতো অ্যাট্রিবিউট সেটআপে অক্ষম শ্রেণিকে অন্তর্ভুক্ত করা বোধগম্য । আপনি সম্ভবত $this->addClass('disabled')পদ্ধতিতেও ব্যবহার করতে পারেন , আমি এটি এখনও চেষ্টা করি নি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.