سؤال

سؤال سريع. لدي شكل 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.

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