Frage

Eine kurze Frage. Ich habe eine symfony Form. Als ich Speichern Sie das Formular, möchte ich meine created_by Feld automatisch eingestellt werden, auf Speichern.

Also, ich bin das Bestehen der aktuelle Benutzer-ID als Option in der Form:

$this->form = new ContractForm(null,array("created_by"=>$this->getUser()->getId()));

Und in der configure-Methode des Formulars der Klasse I haben:

$this->setDefault('created_by', $this->getOption("created_by"));

Wenn ich ein created_by Widget hatte, und stellen Sie versteckt, würde diese große Arbeit, aber ich will nicht, ein Feld als Benutzer angezeigt haben, einfach gleich mit Firebug oder andere Werkzeuge manipulieren könnte.

Also meine Frage an Dich, wie speichere ich eine Spalte Wert, wenn das Feld nicht als Widget existiert?

War es hilfreich?

Lösung

Sie brauchen nicht ein Widget für das haben, gerade in der configure-Methode des Formulars Anruf.

<?php
$this->getObject()->setCreatedBy($this->getOption('created_by'));
?>

Es gibt wirklich keine Notwendigkeit, eine Methode zu überschreiben.

Auch für diese Arbeit zu Youd Ihre Form wie diese initiieren

<?php
$this->form = new ContractForm(new Contract(), array('created_by' => $this->getUser()->getId()));`
?>

Andere Tipps

oder in Ihrer ContractForm Klasse, die Sie konfigurieren hinzufügen können ()

$this->widgetSchema['created_by'] = new sfWidgetFormInputText(array('default' => $this->getUser()->getId()));

Ich schlage vor, Sie dieses Verhalten auf Ihrer Klasse verwenden können, sfDoctrineActAsSignablePlugin .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top