Doctrine - sfForm
Bonjour,
Voila je souhaite utiliser sfForm avec les widget et validator sans utiliser le reste de symfony. Je souhaiterai savoir si il est possible d'utiliser dans une tel configuration les plugins.
Je m'explique : Je développe un petit site pour m'entraîner à Doctrine. j'ai donc déjà toute mes tables et mes classes généré par doctrine (sans symfony). J'ai vu récemment que l'on pouvais utiliser sfForm sans utiliser complètement le framework symfony. Et je souhaite donc savoir si a partir de se que j'ai déjà il est possible d'utiliser sfForm notamment avec sfWidgetFormDoctrineChoice par exemple. En partant d'un classe héritant de sfFormDoctrine. En gros sachant que Doctrine a été installé à partir des sources de Doctrine, puis-je utiliser des parties du plugins Doctrine de Symfony ?
Je sais pas si je suis très claire. Merci d'avance
Réponses apportées à cette discussion
Salut,
Normalement tu dois pouvoir utiliser le framework de formulaires intégralement en dehors du reste de Symfony. Il te suffit de récupérer les répertoires form/, widget/ et validator/ de Symfony.
++
bonjour,
Oui j'utilise bien cette méthode.En faite mon problème est qu'avec symfony on peux utiliser doctrine car l'ORM est implémenté dans le framework. Et il y a donc une classe abstraite sfFormDoctrine qui ajoute des option au formulaire.
Mon problème est que j'ai basé un site sur Doctrine et que je souhaite utiliser sfForm pour plus de souplesse (validateur,...). En l'utilisant comme sa, je n'ai donc pas les classe sfFormDoctrine et je rencontre un problème l'or de la création d'une liste déroulante à partir d'élément de la base de donnée.
<?php
class NewsForm extends sfForm
{
public function configure()
{
$this->setWidgets(array(
'id' => new sfWidgetFormInputHidden(),
'categorie_id' => new sfWidgetFormChoice(),
'titre' => new sfWidgetFormInput(),
'body' => new sfWidgetFormTextarea(),
'is_published' => new sfWidgetFormInputCheckbox(),
'user_id' => new sfWidgetFormChoice(),
'created_at' => new sfWidgetFormDateTime(),
'updated_at' => new sfWidgetFormDateTime(),
));
$this->setValidators(array(
'id' => new sfValidatorChoice(array('model' => 'News', 'column' => 'id', 'required' => false)),
'categorie_id' => new sfValidatorChoice(array('model' => 'Categorie')),
'titre' => new sfValidatorString(array('max_length' => 255)),
'body' => new sfValidatorString(array('max_length' => 2147483647)),
'is_published' => new sfValidatorBoolean(),
'user_id' => new sfValidatorChoice(array('model' => 'User')),
'created_at' => new sfValidatorDateTime(array('required' => false)),
'updated_at' => new sfValidatorDateTime(array('required' => false)),
));
$this->widgetSchema->setNameFormat('news[%s]');
unset(
$this['created_at'], $this['updated_at']
);
}
}
Donc enfaite je souhaite afficher une liste déroulante des catégories disponibles avec sfwidgetformchoise.
Cependant le constructeur n'est apparemment pas le même qu'avec sfFormDoctrine puisque j'ai essayé de passer en paramètre :
array('model' => 'Categorie', 'add_empty' => false)
Mais cela n'a pas fonctionné. (dans la classe catégorie j'ai une méthode tostring qui retourne le nom de la catégorie)
Voila, j'ai du mal a exprimer clairement mon problème mais si tu as compris et que tu as une idée, je suis preneur.
Mimos@
Les classes de formulaire, widgets et validateurs de Doctrine se trouvent dans lib/vendor/symfony/plugins/sfDoctrinePlugin/lib/. Il te faut les récupérer pour pouvoir rendre compatible ton application Doctrine avec les formulaires Doctrine.
++