Système de messagerie privée
Bonjour, j'ai quelques questions pour mon système de messagerie privée au niveau des formulaires.
Mon schema.yml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| ##################################### User #####################################
Membre:
inheritance:
extends: sfGuardUser
type: simple
columns:
date_naissance: date
lieu: string(45)
bio: string()
relations:
Conversations:
class: ConversationPrivee
local: user_id
foreign: conversation_id
refClass: MembreConversationPrivee
type: many
News:
type: many
local: id
foreign: user_id
CommentairesNews:
class: CommentaireNews
type: many
local: id
foreign: user_id
################################## Messagerie ##################################
ConversationPrivee:
columns:
id:
type: integer
unsigned: true
primary: true
autoincrement: true
sujet:
type: string(45)
notnull: true
relations:
Participants:
class: Membre
local: conversation_id
foreign: user_id
refClass: MembreConversationPrivee
type: many
Messages:
class: MessagePrive
local: id
foreign: conversation_id
type: many
MembreConversationPrivee:
tableName: participant
columns:
user_id: { type: integer, primary: true }
conversation_id: { type: integer, unsigned: true, primary: true }
MessagePrive:
actAs:
Timestampable: ~
columns:
id:
type: integer
unsigned: true
primary: true
autoincrement: true
user_id:
type: integer
conversation_id:
type: integer
unsigned: true
notnull: true
message:
type: string()
notnull: true
relations:
ConversationPrivee:
local: conversation_id
foreign: id
onDelete: CASCADE
Membre:
local: user_id
foreign: id
onDelete: SET NULL |
Je voudrais faire un formulaire de création d'une conversation, qui intègre aussi le formulaire de message privé (pour écrire le premier message de la conversation).
J'ai donc utilisé mergeForm :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| class ConversationPriveeForm extends BaseConversationPriveeForm
{
public function configure()
{
$this->setWidgets(array(
'participants_list' => new sfWidgetFormTextarea(array('label' => 'Liste des participants :'), array('rows' => 4, 'cols' => 15)),
'sujet' => new sfWidgetFormInputText(array('label' => 'Sujet :')),
));
$this->validatorSchema['sujet'] = new sfValidatorString(array('max_length' => 150, 'min_length' => 3));
$this->mergeForm(new MessagePriveForm());
}
} |
Donc en gros, on entre le sujet de la conversation, les pseudos des participants (dans un textarea, séparés ligne par ligne).
Mon premier problème est que le textarea de la liste des participants contient le mot "Array" par défaut, comment rendre ce champ vide ? Et surtout, pourquoi est-il affiché Array ?
Deuxième problème : comment faire un validateur pour ce champ ? Il devrait checker que chaque pseudo existe dans la base... Comment on utilise Doctrine dans les validateurs ?