Bonjour,
j'ai créé un module dans l'administration de mon site qui doit me
permettre de mettre à jour une relation plusieurs-plusieurs.
Le problème c'est que lorsque je veux bind mon formulaire celui-ci
semble troujours vide.
Je suppose que c'est parce que mes valeurs envoyé ne sont pas bonnes
mais pourtant renderGlobalErrors est toujours vide.
Voici le schema de mes tables.
----------
# config/schema.yml
propel:
bordoz_article:
id: ~
titre: { type: longvarchar, required: true }
sous_titre: { type: longvarchar, required: true }
texte: { type: longvarchar, required: true }
url: { type: varchar(255), required: true, index:unique }
post_date: { type: timestamp, required: true}
publication_date: {type: timestamp, required: true}
etat: { type: integer, required: true}
auteur: { type: integer, foreignTable: bordoz_auteurs,
foreignReference: id, required: true }
user: { type: integer, foreignTable: sf_guard_user,
foreignReference: id, required: true }
meta_kw: { type: varchar(255)}
meta_desc: { type: varchar(255)}
bordoz_categorie:
id: ~
nom: { type: varchar(255), required: true }
url: { type: varchar(255), required: true, index:unique}
meta_kw: { type: varchar(255)}
meta_desc: { type: varchar(255)}
bordoz_auteurs:
id: ~
nom: { type: varchar(255), required: true, index: unique }
bordoz_article_categorie:
id: ~
id_categorie: { type: integer, foreignTable: bordoz_categorie,
foreignReference: id, primaryKey: true, required: true, onDelete:
cascade }
id_article: { type: integer, foreignTable: bordoz_article,
foreignReference: id, primaryKey: true, required: true, onDelete:
cascade }
position: { type: integer }
--------------
Voici mon formulaire:
-------------
class PositionsForm extends BaseFormPropel
{
private $categorie;
public function __construct($categorie) {
$this->categorie = $categorie;
parent::__construct();
}
public function getModelName() {
return 'BordozArticleCategorie';
}
public function configure() {
$this->setWidgets(array(
'position_1' => new sfWidgetFormSelect(array('choices'
=> $this-
>getArticles())),
'position_2' => new sfWidgetFormSelect(array('choices'
=> $this-
>getArticles())),
'position_3' => new sfWidgetFormSelect(array('choices'
=> $this-
>getArticles())),
'selected_categorie' => new
sfWidgetFormInputHidden(array())
));
$this->widgetSchema->setLabels(array(
'position_1' => 'Position 1',
'position_2' => 'Position 2',
'position_3' => 'Position 3',
'selected_categorie' => 'categorie'
));
$this->setValidators(array(
'position_1' => new sfValidatorChoice(array('choices' =>
array_keys(array(1,2,3)))),
'position_2' => new sfValidatorChoice(array('choices' =>
array_keys(array(1,2,3)))),
'position_3' => new sfValidatorChoice(array('choices' =>
array_keys(array(1,2,3)))),
'selected_categorie' => new sfValidatorInteger()
));
$this->setDefault('selected_categorie',$this->categorie);
$this->widgetSchema->setNameFormat('position[%s]');
$this->errorSchema = new sfValidatorErrorSchema($this-
>validatorSchema);
}
public function getArticles() {
$criteria=BordozArticleCategoriePeer::getByIdCategorieCriteria($this-
>categorie);
$criteria=BordozArticlePeer::getActiveCriteria($criteria);
$articles=BordozArticlePeer::doSelect($criteria);
$array=array(0=>'');
foreach ($articles as $article) {
$array[$article->getId()]=$article->getTitre();
}
return $array;
}
}
-----------------
et enfin voici mon action
-----------------
class positionsActions extends sfActions
{
/**
* Executes index action
*
* @param sfRequest $request A request object
*/
public function executeIndex(sfWebRequest $request) {
$this->categories=BordozCategoriePeer::getCategories();
$criteria=BordozArticleCategoriePeer::getWithPosition();
foreach(BordozArticleCategoriePeer::doSelect($criteria) AS
$position) {
$positions[$position->getIdCategorie()][$position->getPosition()]=
$position->getIdArticle();
}
foreach($this->categories as $categorie) {
$forms[$categorie->getId()]=new positionsForm($categorie-
>getId());
$i=1;
while ($i<=3) {
if (isset($positions[$categorie->getId()][$i]))
$forms[$categorie->getId()]->setDefault('position_'.$i,
$positions[$categorie->getId()][$i]);
$i++;
}
}
$this->forms=$forms;
}
public function executeSubmit(sfWebRequest $request) {
$categorie=BordozCategoriePeer::getById($request-
>getParameter('position[categorie]'));
$this->getUser()->setFlash('notice', 'Les positions de la
catégorie
<strong>'.$categorie.'</strong> ont été mises à jour');
echo "la
categorie".$request->getParameter('selected_categorie');
$this->form = new positionsForm(1);
$this->form->bind($request->getParameter($this->form->getName()));
var_dump($request->getParameter($this->form->getName()));
print_r($this->form->getValues());
echo $this->form->renderGlobalErrors();
if($this->form->isValid())
{
die('form is Valid!');
}
die('after isValid...');
$this->redirect('bordoz_positions');
}
}
--
Vous recevez ce message, car vous êtes abonné au groupe Google
Groupes Symfony-fr.
Pour envoyer un message à ce groupe, adressez un e-mail
à [email protected].
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse
[email protected].
Pour plus d'options, consultez la page de ce groupe :
http://groups.google.com/group/symfony-fr?hl=fr