Symfony - تعيين قيمة النموذج على حفظ
-
25-09-2019 - |
سؤال
سؤال سريع. لدي شكل symfony. عندما أقوم بحفظ النموذج ، أريد تعيين حقل Create Created_by تلقائيًا على الحفظ.
لذا ، أقوم بتمرير معرف المستخدم الحالي كخيار في النموذج:
$this->form = new ContractForm(null,array("created_by"=>$this->getUser()->getId()));
وفي طريقة تكوين فئة النموذج لدي:
$this->setDefault('created_by', $this->getOption("created_by"));
إذا كان لدي عنصر واجهة مستخدم تم إنشاؤه وضبطه على إخفاءه ، فسيعمل هذا بشكل رائع ، ومع ذلك ، فأنا لا أرغب في عرض حقل كمستخدم يمكن بسهولة معالجته باستخدام Firebug أو أدوات أخرى على حد سواء.
لذا سؤالي لك ، كيف يمكنني حفظ قيمة العمود إذا لم يكن الحقل موجودًا كعنصر واجهة مستخدم؟
المحلول
لا تحتاج إلى الحصول على عنصر واجهة مستخدم لهذا ، فقط في طريقة تكوين مكالمة النموذج الخاصة بك.
<?php
$this->getObject()->setCreatedBy($this->getOption('created_by'));
?>
لا توجد حاجة حقًا للكتابة فوق طريقة.
أيضًا لكي تعمل هذا ، يجب عليك بدء النموذج الخاص بك مثل هذا
<?php
$this->form = new ContractForm(new Contract(), array('created_by' => $this->getUser()->getId()));`
?>
نصائح أخرى
أو في فئة العقد الخاصة بك يمكنك إضافتها إلى Config ()
$this->widgetSchema['created_by'] = new sfWidgetFormInputText(array('default' => $this->getUser()->getId()));
أقترح أنه يمكنك استخدام هذا السلوك في صفك sfdoctrineactassignableplugin.