giugno 22nd, 2010
Stub article, to be finished.
function yourmodule_views_pre_view(&$view, &$display_id, &$args) {
if ($view->name == 'your_views') {
/* Get the Sort object */
$sort = $view->display['default']->display_options['sorts'];
/* Change the sort order */
$sort['name']['order'] = 'DESC';
/* Set the new sorting object */
$view->display_handler->set_option('sorts', $sort);
}
}
Posted in Informatica, drupal, php | No Comments »
luglio 2nd, 2009
Riporto (con tremendo ritardo) le slides del nostro intervento al PHPDAY e al Drupal Social Club (in forma ridotta).
Read the rest of this entry »
Posted in 2.0, drupal, facebook, fbconnect | Tags: drupal, facebook, fbconnect | No Comments »
febbraio 9th, 2009
Scusate per il titolo criptico, ma non trovato altro modo per semplificare la questione che mi ha fatto perdere non poco tempo.
La questione è questa (caso base):
- Schema con 1 relazione M-M
- Modulo generato con l’admin generator
- Embed sulla form principale di un’altra form a cui è associata la relazione M-M (Category <-> Article)
Quindi prendiamo questo schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
anagrafica:
id: ~
nome: { type: varchar(255), required: true }
cognome: { type: varchar(255), required: true }
sesso: { type: varchar(255), required: true }
eta: { type: integer, required: true }
caratteristica_id: ~
caratteristica:
id: ~
nome: { type: varchar(255), required: true }
malattia:
id: ~
nome: { type: varchar(255), required: true }
caratteristica_malattia:
caratteristica_id: { type: integer, foreignTable: caratteristica, foreignReference: id, required: true, primaryKey: true, onDelete: cascade }
malattia_id: { type: integer, foreignTable: malattia, foreignReference: id, required: true, primaryKey: true, onDelete: cascade } |
2) Generiamo un modulo di amministrazione per la tabella Anagrafica:
1
| symfony propel:generate-admin Anagrafica --module=anagrafica |
3) Facciamo l’embed dal modulo anagrafica della form caratteristica:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| class AnagraficaForm extends BaseAnagraficaForm
{
public function configure()
{
// get Related Object model
$caratteristica = $this->getObject()->getCaratteristica();
if (is_null($caratteristica)) {
$caratteristica = new Caratteristica();
$caratteristica->setAnagrafica($this->getObject());
$this->getObject()->setCaratteristica($caratteristica);
}
$caratteristica_form = new CaratteristicaForm($caratteristica);
$this->embedForm('Caratteristica', $caratteristica_form);
parent::configure();
}
} |
3) A questo punto, la form è completa, sulla form Anagrafica avremo la form caratteristica correttamente “embeddata”, l’unico problema (che è poi il cuore di questo articolo) è che la relazione M-M non verrà correttamente salvata.
Perchè ? In realtà ci sono già alcuni ticket aperti:
http://trac.symfony-project.org/ticket/4850
Quando la form embeddata viene salvata, non viene chiamata la funzione doSave(), ma l’oggetto viene salvato direttamente, è stata proposta la patch di cui sopra, ma il buon Fabien ci fa sapere che in questo caso è bene utilizzare l’override della funzione updateObject(), quindi la soluzione potrebbe essere questa:
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
|
class CaratteristicaForm extends BaseCaratteristicaForm
{
public function updateObject($values = null)
{
$this->updateCaratteristicaMalattia();
parent::updateObject($values);
}
public function updateCaratteristicaMalattie() {
$con = $this->getConnection();
$c = new Criteria();
$c->add(CaratteristicaMalattiaPeer::CARATTERISTICA_ID, $this->object->getPrimaryKey());
CaratteristicaMalattiaPeer::doDelete($c, $con);
$values = $values['caratteristica_malattia_list'];
if (is_array($values))
{
foreach ($values as $value)
{
$obj = new CaratteristicaMalattia();
$obj->setCaratteristicaId($this->object->getPrimaryKey());
$obj->setMalattiaId($value);
$obj->save();
}
}
}
} |
Dove la funzione updateCaratteristicaMalattie() non è altro che un piccolo refactoring della funzione “saveCelgeneCaratteristicaMalattiaList()” che gia troviamo nella classe “BaseCaratteristicaForm”.
Non aggiungo altro, qui c’è tutto per risolvere questo strano comportamento di sfPropel.
Posted in Informatica, php, symfony | Tags: php, propel, symfony | 1 Comment »
gennaio 13th, 2009
Tanto per precisare, il vecchio dominio “mainardipaolo.org” non e’ (purtroppo) piu’ in mio possesso.
Il nuovo nome “www.paolomainardi.com“, se incappate nel mio clone, siete avvertiti, non sono io
Posted in furto d'identita' | 2 Comments »