1
我正在使用一些自定義窗體,其中一個未綁定它的POST值。我爲每個使用相同的邏輯,並且只有其中一個不工作。下面的代碼:Symfony窗體 - >綁定失敗
public function executeMediaFileUpload(sfWebRequest $request) {
$this->form = new MediaFileUploadForm();
if (!$request->isMethod('POST'))
$psk = $request->getParameter('psk');
else {
$this->form->bind($request->getParameter($this->form->getName()), $request->getFiles($this->form->getName()));
$this->logMessage('VALUE: ' . $this->form->getValue('version'));
$psk = $this->form->getValue('application');
}
$this->logMessage('PSK: ' . $psk);
$app = Doctrine::getTable('Application')->find(array($psk));
$this->form->setDefault('application', $app->getPsk());
$this->form->setDefault('version', $app->getVersion()->getLast()->getPsk());
在初始GET,我可以看到通過PSK越來越設置爲默認在生成的HTML應用程序傳遞的值,而所有這些數值在Firebug的POST請求顯示,但在綁定表單後,它仍然不包含任何值。
編輯: 是的,窗體設置爲multipart和POST。我在窗體中調用$ this-> widgetSchema-> setNameFormat('values [%s]')。
EDIT2:這裏是窗體的HTML和GetName僅返回「值」:爲形式
<form name="mediafiles" action="<?php echo url_for('application/mediaFileUpload') ?>" method="POST" <?php $form->isMultipart() and print 'enctype="multipart/form-data" ' ?> id="applications">
<div class="clear">
<div>
<?php echo $form->renderHiddenFields() ?>
<?php foreach($form as $widget): ?>
<?php if (!$widget->isHidden()): ?>
<?php echo $widget->renderLabel() ?>
<?php echo $widget->renderError() ?>
<?php echo $widget->render() ?>
<?php endif ?>
<?php endforeach ?>
</div>
</div>
<!-- Start Bottom Sub Navigation -->
<div class="subnav clear">
<a href="<?php echo url_for('application/index') ?>">Cancel</a>
<a href="<?php echo url_for('application/index') ?>" onclick="document.forms['mediafiles'].submit(); return false;">Upload</a>
</div>
<!-- End Bottom Sub Navigation -->
存儲在請求對象中的值是否在正確的數組中能夠使用'$ this-> form-> getName()'? – richsage 2010-05-24 20:43:25
您的HTML表單是否使用:method =「post」enctype =「multipart/form-data」? – Tom 2010-05-24 21:55:57
$ request-> getParameter($ this-> form-> getName())的值是什麼? 該代碼看起來很好,所以我會指着我的手指在表單的HTML不正確。 – johnwards 2010-05-25 07:33:07