Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
salut j'ai un problème avec l'utilisation de upladify pour faire un upload avec ajax. En faite tout marche bien sauf que je veut faire un tester la validité du formulaire avec isValid pour récupérer les id des champs invalides et les messages d'erreurs. là lorsque je fait la soumission du formulaire en remplissant tout les champs du formulaire le résultat de isValid est FALSE. Le problème est surement due au champs file mais je trouve pas de solution surtout qu'il y'a aucun message d'erreur au retour !!!
et voici le code : =>view :
jQuery(document).ready(function(){
$('#file_upload').uploadify({
'swf' :'/assets/flash/uploadify.swf',
'uploader' : '/dentiste/dentiste/publishimage',
'folder':'/upload/images',
'onUploadComplete' : function(file) {
var file_name = file.name;
var name = jQuery("#publierimageForm").find("#name");
name.val(file_name);
},
'multi' : false,
'auto':true
// Put your options here
});
jQuery("#publierimageForm").submit(function(){
jQuery.ajax({
url : jQuery(this).attr("action"),
type : 'POST',
data : jQuery(this).serialize(),
success : function(res){
res = jQuery.parseJSON(res);
_countMessages = res.messages.length ;
jQuery("#publierimageForm input, #publierimageForm textarea").removeClass("redborder");
if(_countMessages > 0){
_i = 0 ;
for(_i = 0 ; _i < _countMessages ; _i++ ){
jQuery( "#publierimageForm #"+res.messages[_i]).addClass("redborder");
if(res.messages[_i] =="name")
{
jQuery(".uploadify-button ").css('border','red 1px solid');
}
}
}
console.log(res);
}
});
return false;
});
});
</script>
<?php echo $this->publierimageForm?>
=>controlleur :
$this->_helper->layout()->disableLayout();
$_publierimageForm = new Dentiste_Form_PublierImageForm();
$_requestAction = array("valid"=>false,"messages"=>array());
$this->view->publierimageForm = $_publierimageForm;
$targetFolder = '/upload/images';
$fileTypes = array('jpg','jpeg','gif','png');
$upload = new Application_Plugin_UploadAjax();
$upload->upload($targetFolder,$fileTypes);
if($this->_request->getPost())
{
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
$_data = $this->_request->getPost();
if($_publierimageForm->isValid($_data))
{
$_requestAction['valid'] = TRUE ;
$name = $_data['name'];
$text = $_data['text'];
$title = $_data['title'];
$_requestAction['data'] = $_data ;
$type = 2;
$auth = Zend_Auth::getInstance();
$auth->setStorage(new Zend_Auth_Storage_Session('dentiste'));
$dentiste_id = $auth->getIdentity()->id;
$state = 1;
$date = new Zend_Date();
$created = $date->get();
$_publications = new Dentiste_Model_DbTable_Publications;
$id_pub = $_publications->ajouter_publicationImage($dentiste_id, $type, $title, $text, $name, $state, $created);
if ($id_pub == NULL)
{
$_requestAction['succes'] = FALSE;
}
else
{
$_requestAction['succes'] = TRUE;
}
}
else
{
$_requestAction['valid'] = FALSE ;
$_messages = $_publierimageForm->getMessages();
foreach($_messages as $_key=>$_val)
{
$_requestAction['messages'][] = $_key ;
}
}
echo Zend_Json::encode($_requestAction);
}
merci pour votre aide
Hors ligne
Bonjour,
As-tu ajouté l'attribut enctype="multipart/form-data" à ton formulaire?
Pour traiter un upload, ton formulaire doit avoir cet attribut.
Si oui, pourrais-tu alors publier le code ton formulaire Dentiste_Form_PublierImageForm ?
Dernière modification par delorbe (01-07-2012 09:12:31)
Hors ligne
oui j'ai mis enctype="multipart/form-data" pour le formulaire et voici le code :
class Dentiste_Form_PublierImageForm extends Zend_Form
{
public function init()
{
$_translate = Zend_Registry::get("_translate");
$_valid_NotEmpty = new Zend_Validate_NotEmpty();
$_title = new Zend_Form_Element_Text('title');
$_title->setRequired(true)
->addFilter("StripTags")
->addFilter("StringTrim")
->addValidator($_valid_NotEmpty )
->setLabel($_translate->translate('titre'));
$_text = new Zend_Form_Element_Textarea('text');
$_text->setRequired(true)
->addFilter("StripTags")
->addFilter("StringTrim")
->setLabel($_translate->translate('textrelatif'))
->addValidator($_valid_NotEmpty )
->setAttrib('class','textarea');
$_Upload = new Zend_Form_Element_File('file_upload');
$_Upload->setLabel($_translate->translate('uploadfichier'))
->setDestination('C:/zendprojects/portail-dentaire/public/upload/images')
->setAttrib('class','file')
->setAttrib('id','file_upload')
->setRequired(false)
->addErrorMessage('Please upload a valid File (jpg,png,gif,jpeg)');;
$name = new Zend_Form_Element_Hidden ( 'name' );
$name ->addValidator($_valid_NotEmpty )
->setRequired(true);
$_submit = new Zend_Form_Element_Submit('submit');
$_submit->setAttrib('id', 'submitbutton')
->setAttrib('class','submit')
->setLabel('Publier')
->setRequired(false);
$this->addElements(array($_title,$_text,$_Upload,$name, $_submit));
$this->setAction('/dentiste/dentiste/publishimage');
$this->setAttrib("id","publierimageForm");
$this->setAttrib("method","post");
$this->setAttrib('name','publicationImage');
$this->setAttrib('accept-charset', 'utf-8');
$this->setAttrib('enctype', 'multipart/form-data');
}
}
Hors ligne
Pages: 1