En ce moment je travaille sur un formulaire dans Zend Framework. Il doit devenir un formulaire où une entreprise peut remplir les détails du candidat. Je suis assez nouveau avec Zend, c'est pourquoi je poste ma question.Zend Framework: Télécharger un fichier en utilisant Zend Form Element
C'est ce que la forme ressemble (certains champs supprimés pour rendre le code plus court)
<?php
class Application_Form_Validate_ContactMethodSelected extends Zend_Validate_Abstract {
const INVALID = 'invalid';
protected $_messageTemplates = array(
self::INVALID => 'Ten minste 1 vorm van contact invullen, telefoon, mobiel of e-mail'
);
public function isValid($value, $context = array())
{
// You need to use your element names, consider making these dynamic
$checkFields = array('telefoon','mobiel','mail');
// Check if all are empty
foreach ($checkFields as $field) {
if (isset($context[$field]) && !empty($context[$field])) {
if (!empty($value)) {
// This is the element with content... validate as true
return true;
}
// we are going to return false and no error
// to break validation chain on other empty values
// This is a quick hack, don't have time to invest in this
return false;
}
}
// All were empty, set your own error message
$this->_error(self::INVALID);
return false;
}
}
class Application_Form_Nieuwkandidaat extends Zend_Form {
public function init() {
$this->setMethod('post');
$DB = Zend_Db_Table::getDefaultAdapter();
$id = $this->createElement('hidden', 'id');
$voornaam = $this->createElement('text', 'voornaam');
$voornaam->setLabel('Voornaam:')
->setAttrib('size', 50)->addValidator('StringLength', false, array(2, 30))
->setRequired(true);
$telefoon = $this->createElement('text', 'telefoon');
$telefoon->setLabel('Telefoon:')
->setAttrib('size', 50)->setAllowEmpty(false)
->addValidator(new Application_Form_Validate_ContactMethodSelected(), true)
->addValidator('StringLength', false, array(10, 10));
$mobiel = $this->createElement('text', 'mobiel');
$mobiel->setLabel('Mobiel:')
->setAttrib('size', 50)->setAllowEmpty(false)
->addValidator(new Application_Form_Validate_ContactMethodSelected(), true)
->addValidator('StringLength', false, array(10, 10));
$mail = $this->createElement('text', 'mail');
$mail->setLabel('E-mail:')
->setAttrib('size', 50)->setAllowEmpty(false)
->addValidator(new Application_Form_Validate_ContactMethodSelected(), true)
->addValidator('StringLength', false, array(6, 40))->addValidator('EmailAddress', true);
$register = $this->createElement('submit', 'register');
$register->setLabel("Verstuur")
->setIgnore(true);
$reset = $this->createElement('reset', 'reset');
$reset->setLabel("Reset")
->setIgnore(true);
$this->addElements(array(
$voornaam,
$mobiel,
$telefoon,
$mail,
$id,
));
$this->addDisplayGroup(array(
'voornaam',
'mobiel',
'telefoon',
'mail',
'telefoon'
), 'contacts', array('legend' => 'Contact Informatie'));
$contacts = $this->getDisplayGroup('contacts');
$contacts->setDecorators(array(
'FormElements',
'Fieldset',
array('HtmlTag', array('tag' => 'div', 'style' => 'width:50%;;float:left;'))
));
$this->setDecorators(array(
'FormElements',
array('HtmlTag', array('tag' => 'div', 'style' => 'width:98%')),
'Form'
));
$this->addElement($register);
}
}
Comment puis-je ajouter un élément de formulaire où je peux sélectionner un fichier et le télécharger, il sera stocké (disons par exemple dans/application/tmp)
Si je dois placer le code de mon contrôleur, s'il vous plaît laissez-moi savoir aussi bien
Merci à l'avance!
Je suis confus, vous posez des questions sur un élément de formulaire et nous montrez votre code sur une classe de validation? –
-1 Je ne reçois pas de réponse. – JellyBelly