.: HosiriS :.

Informatica e non solo

Archive for the ‘Symfony’ Category

Creiamo una galleria immagini con Symfony

Posted by hosiris su ottobre 31, 2010

Avviso subito che questo post è valido solo se state usando Propel come ORM perchè prevediamo l’uso del plugin sfAssetsLibraryPlugin. Non parlerò dell’installazione di questo plugin che è ben spiegata nel readme.
I restanti plugin che utilizzeremo e che vi conviene installare da subito sono:

  • sfThumbnailPlugin
  • sfJQueryLightboxPlugin
  • sfJqueryReloadedPlugin

Accediamo al backend di sfAsset (…/backend/sfAsset) e creiamo una cartella “gallery”. All’interno di questa cartella potrete uploadare tutte le immagini.
Per configurare il frontend cominciamo con il creare il modulo gallery:

$ ./symfony generate:module frontend gallery

Aggiungiamo la rotta per il nuovo modulo:

# apps/frontend/config/routing.yml
gallery_list:
  url: /gallery
  param: { module: gallery, action: index }

Apriamo il file action.class.php del modulo gallery e aggiungiamo:

public function executeIndex(sfWebRequest $request)
{
  $parentPath = null;
  $path = $request->getParameter('dir', 'gallery');
  $folder = sfAssetFolderPeer::retrieveByPath($path);
  $this->forward404Unless(!$folder->isRoot());
  $parentPaths = explode('/', $folder->getParentPath());
  if (0 < $cnt = count($parentPaths)) {
    $parentPath = $parentPaths[$cnt-1];
  }
  $c = new Criteria();
  $c->add(sfAssetPeer::FOLDER_ID, $folder->getId());
  $c->addDescendingOrderByColumn(sfAssetPeer::CREATED_AT);
  $this->files = sfAssetPeer::doSelect($c);
  $this->dirs = $dirs;
  $this->folder = $folder;
  $this->parentPath = $parentPath;
}

Adesso modifichiamo il template, quindi apriamo il file indexSuccess.php

  <?php use_stylesheet('gallery.css', 'last') ?>
  <?php use_helper('I18N', 'sfAsset') ?>
  <h1><?php echo strtoupper($folder->getRelativePath()) ?></h1>
  <hr/>
  <div id="media">
  <?php if (null !== $parentPath && $parentPath == 'gallery'): ?>
    <div class="assetImage">
      <div class="thumbnails">
        <?php echo link_to_asset(image_tag('/sfAssetsLibraryPlugin/images/up', 'size=64x64 alt=up title='.__('Parent directory', null, 'sfAsset')), '@gallery_list?dir='. $folder->getParentPath()) ?>
      </div>
      <div class="assetComment" id="ajax_dir_0">..</div>
    </div>
  <?php endif ?>
  
  <?php foreach ($dirs as $dir): ?>
    <div class="assetImage">
      <div class="thumbnails">
        <?php echo link_to_asset(image_tag('/sfAssetsLibraryPlugin/images/folder', 'size=64x64 alt=folder title='.$dir->getName()), '@gallery_list?dir=' . $dir->getRelativePath()) ?>
      </div>
      <div class="assetComment"><?php echo auto_wrap_text($dir->getName()) ?></div>
    </div>
  <?php endforeach ?>
  </div>
  <div id="gallery">
  <?php foreach ($files as $sf_asset): ?>
      <?php $src_thumb = $sf_asset->getUrl('small', isset($folder) ? $folder->getRelativePath() : null); ?>
      <?php echo image_tag($src_thumb, array('class'=>'light', 'width'=>154, 'height'=>140)) ?>
  <?php endforeach ?>
  </div>
  </div>

Cancelliamo la cache:

$ ./symfony cc

In questo modo vedremo apparire la galleria nella pagina: http://yoursite/frontend_dev.php/gallery.

Possiamo aggiungere un effetto lightbox alle immagini quando viene cliccata una immagine.
Riapriamo il file indexSuccess.php e mofichiamo l’uso dell’helper in:

e modifichiamo il div gallery come segue:

Ricaricate la pagina, et voila… tutto pronto.

Annunci

Posted in CMS&MVC, Programmazione, Symfony | Leave a Comment »

Lavoriamo con Google Maps tramite Symfony

Posted by hosiris su ottobre 27, 2010


$ svn co http://svn.symfony-project.com/plugins/sfEasyGMapPlugin/branches/v3 sfEasyGMapPlugin

settings.yml

all:
  .settings:
    enabled_modules: [default, sfEasyGMapPlugin]

modifica ProjectConfiguration.class.php

$this->enablePlugins('sfEasyGMapPlugin');


$ php symfony cc


$ ln -s ../plugins/sfEasyGMapPlugin/web web/sfEasyGMapPlugin

In the action:

$this->gMap = new GMap();
$this->gMap->addMarker(new GMapMarker(51.245475,6.821373));
$this->gMap->addMarker(new GMapMarker(46.262248,6.115969));

In the template:

<?php use_helper('Javascript','GMap') ?>
<?php include_map($gMap,array('width'=>'512px','height'=>'400px')); ?>
<!-- Javascript included at the bottom of the page -->
<?php include_map_javascript($gMap); ?>

Posted in CMS&MVC, Programmazione, Symfony | Leave a Comment »

Inviamo email con Symfony

Posted by hosiris su ottobre 23, 2010

Con la versione 1.3 in Symfony è stata integrata la classe Swift Mailer 4.1, semplificando enormemente le operazioni necessarie ad inviare mail.
La configurazione è basata sull’applicazione e può essere diversa per ogni ambiente. Queste configurazioni si trovano in apps/frontend/config/factories.yml.

prod:
  mailer:
    param:
      delivery_strategy: realtime
test:
  mailer:
    param:
      delivery_strategy: none
dev:
  mailer:
    param:
      delivery_strategy: single_address
      delivery_address: your_email
all:
  mailer:
    param:
      transport:
        class: Swift_SmtpTransport
        param:
          host: smtp.gmail.com
          port: 465
          encryption: ssl
          username: your_gmail_account
          password: your_gmail_password

Per istanziare un oggetto “mail”, nell’azione è sufficiente richiamare:

$this->getMailer()

La composizione e l’invio della mail sono possibili in maniera semplice tramite il metodo:

$this->getMailer()->composeAndSend('from@example.com', 'to@example.com', 'Subject', 'Body');

Se fosse necessario creare messaggi più complessi, la classe sfMailer fornisce accesso a tutte le funzionalità di SwiftMailer. Ad esempio:

#/myproject/apps/frontend/modules/mymodule/actions.class.php
public function executeSend($request)
{
...
    $message = $this->getMailer()->compose();
    $message->setSubject($params['subject']);
    $message->setTo($params['to']));
    $message->setFrom($params['from']);
    $html = $this->getPartial('mymodule/myTemplateHtml',$params);
    $message->setBody($html, 'text/html');
    $text = $this->getPartial('mymodule/myTemplateTxt',$params);
    $message->addPart($text, 'text/plain');
    $this->getMailer()->send($message);
...
}

Per maggiori approfondimento consiglio di leggere la documentazione.

Buon divertimento

Posted in CMS&MVC, Programmazione, Symfony | Leave a Comment »

Come lavorare con i form in Symfony

Posted by hosiris su ottobre 22, 2010

In vari casi abbiamo visto come, in maniera del tutto automatica, Symfony potesse generare i form di inserimento e modifica per la gestione del modello.
Ma se volessimo comporre un form che ci permetta, ad esempio, di richiedere dei dati da un utente, che procedura dovremmo seguire?
Per questo scopo, cominceremo ad analizzare la classe sfForm. Iniziamo con il descrivere la classe ContactForm:

// lib/form/ContactForm.class.php
class ContactForm extends sfForm
{
  public function configure(){
    $this->setWidgets(array(
      'name' => new sfWidgetFormInputText(),
      'email' => new sfWidgetFormInputText(),
      'message' => new sfWidgetFormTextarea(),
    ));
  }
}

Adesso che la classe è pronta possiamo generare un modulo:

$ ./symfony generate:module frontend contact

Adesso dobbiamo modificare l’azione del modulo contact:

// apps/frontend/modules/contact/actions/actions.class.php
class contactActions extends sfActions
{
  public function executeIndex(){
    $this->form = new ContactForm();
  }
}

E per fare in modo che venga visualizzato il form, modifichiamo il template:

// apps/frontend/modules/contact/templates/indexSuccess.php
<form action="<?php echo url_for('contact/submit') ?>" method="post">
  <table>
    <?php echo $form ?>
    <tr>
      <td colspan="2">
        <input type="submit" />
      </td>
    </tr>
  </table>
</form>

Per vedere il risultato, portiamoci sulla pagina /frontend_dev.php/contact.
Se provate ad inserire i dati e premere submit, vedrete che non succederà niente; questo perchè non abbiamo definito una azione per il “submit”:

// apps/frontend/modules/contact/action/action.class.php
public function executeSubmit($request)
{
  $this->forward404Unless($request->isMethod('post'));
  $params = array(
    'name'    => $request->getParameter('name'),
    'email'   => $request->getParameter('email'),
    'message' => $request->getParameter('message'),
  );
  $this->redirect('contact/thankyou?'.http_build_query($params));
}
public function executeThankyou()
{
}
// apps/frontend/modules/contact/templates/thankyouSuccess.php
<ul>
  <li>Name:    <?php echo $sf_params->get('name') ?></li>
  <li>Email:   <?php echo $sf_params->get('email') ?></li>
  <li>Message: <?php echo $sf_params->get('message') ?></li>
</ul>

In questo modo dopo il submit apparirà una finestra che mostrerà le informazioni che sono state inserite.
Visto il nome del modulo si è capito che stiamo per creare una conct form. Il secondo passo sarà quello di inviare una mail con le informazioni inserite nel form.
Vi consiglio di dare un’occhiata alla sezione della validazione del form, che ci permette con poche linee di testo di essere sicuri che l’utente stia lavorando correttamente.

Buon divertimento

Posted in CMS&MVC, Programmazione, Symfony | Leave a Comment »

Programmare con symfony attraverso la rete

Posted by hosiris su ottobre 9, 2010

Adesso che ho la mia VPN ho potuto spostare i progetti in lavorazione su un server che userò per lo sviluppo.
Appena trasferiti tutti i progetti mi si è presentato il primo problemino (niente di grave per fortuna): appena cercavo di accedere al frontend di sviluppo di symfony mi appariva il seguente messaggio:

You are not allowed to access this file. Check frontend_dev.php for more information.

La soluzione è semplice. Apriamo il file /var/www/project/web/frontend_dev.php ed effettuiamo la modifica:

if (!in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1', '10.1.1.2')))

In questo modo stiamo dicendo a symfony di accettare anche indirizzi provenienti anche da 10.1.1.2.

A presto!

Posted in Programmazione, Symfony | Leave a Comment »

G.Li.Ar: adattiamo le query

Posted by hosiris su maggio 19, 2010

Pian pianino il nostro applicativo sta prendendo forma. Dalla bozza iniziale, funzionale, ma imperfetta, pezzo dopo pezzo stiamo raggiungendo ottimi risultati che, lo voglio sottolineare, non richiedono delle conoscenze pazzesche.
Oggi ci dedicheremo alle query di selezione dei dati dal DB. Se avete letto qualcosina su Symfony, saprete che la gestione del modello si appoggia sull’ORM Propel (nel nostro caso, c’è la possibilità di usare Doctrine) e sulla classe Criteria. Di default quando viene creato il modello, il framework genera automaticamento le query di base, ma come facciamo a modificarle per aggiungere ulteriori parametri? Dobbiamo aggiungere solo un po’ di codice alle classi esistenti, ma niente di sconvolgente.
Innanzitutto decidiamo cosa fare. Il mio intento è quello di ordinare alfabeticamente tutte le informazioni, per cui alle nostre query dovremmo aggiungere una condizione “Order By”.
Come nello scorso post, mostrerò come agire prendendo in esempio un solo file, ma bisogna lavorare su ogni modulo ed in particolare sui seguenti file:


lib/model/ArticoliPeer.php
lib/model/AutoriPeer.php
lib/model/CategoriePeer.php
lib/model/EditoriPeer.php
lib/model/LibriPeer.php
lib/model/RivistePeer.php

Apriamo il primo file, noteremo la presenza di una classe vuota (in realtà non lo è, per chi non conoscesse la programmazione ad oggetti la clausola “extends” implica il fatto che questa classe erediti i metodi da una classe madre). Aggiungiamo la seguente funzione:


static public function doOrder(){
  $criteria = new Criteria();
  $criteria->addAscendingOrderByColumn(self::TITOLO);
  return self::doSelect($criteria);
}

da notare l’ordinamento fatto sul campo “TITOLO”, questo va modificato nei vari moduli in base alla colonna da considerare.
Adesso dobbiamo dire al controller di far riferimento alla giusta funzione, quindi modificheremo, rispettivamente:


apps/frontend/modules/articoli/actions/actions.class.php
apps/frontend/modules/autori/actions/actions.class.php
apps/frontend/modules/categorie/actions/actions.class.php
apps/frontend/modules/editori/actions/actions.class.php
apps/frontend/modules/libri/actions/actions.class.php
apps/frontend/modules/riviste/actions/actions.class.php

andremo a modificare l’azione “executeIndex()” in modo che si richiami la nuova funzione, quindi:


public function executeIndex(sfWebRequest $request)
{
  $this->Articolis = ArticoliPeer::doOrder();
}

Posted in GLiAr, PHP, Progetti Personali, Programmazione, Symfony | Leave a Comment »

G.Li.Ar: modifichiamo gli URL

Posted by hosiris su maggio 18, 2010

Forse questa di oggi è la parte più noiosa, ma deve essere fatta per migliorare il nostro applicativo: modificheremo il routing di GLiAr.
Innanzitutto andiamo a creare un nuovo modulo, che ci permetterà di definire la Home Page:


$ ./symfony generate:module main frontend

eliminiamo il codice contenuto nell’azione executeIndex() del nuovo modulo. Andando in “http://gliar/frontend_dev.php/main&#8221; vedrete che sarete reindirizzati su una pagina che ha la struttura da noi definita nel layout, ma vuota nel content; potete modificare la vista del nuovo modulo per fa vedere quello che volete.
Adesso preoccupiamoci di reindirizzare l’applicazione sul nuovo modulo, per fare questo dobbiamo modificare il file apps/frontend/config/routing.yml, modificando la rotta della home page in questo modo:


homepage:
  url: /
  param: { module: main, action: index }

da questo momento sarà sufficiente visitare http://gliar/frontend_dev.php per ritrovarci di fronte alla homepage.
Ho modificato il file di layout aggiungendo il link alla home page e al modulo riviste (dimenticato la volta scorsa).
Attualmente l’url generato ha una forma poco leggibile, ma possiamo fare in modo che il risultato sia come il seguente:

e per farlo dobbiamo modificare nuovamente il file di routing (mostrerò gli esempi per un solo caso, ma questo va ripetuto per ogni modulo):


# apps/frontend/config/routing.yml
show_art:
  url: /articoli/:id/:titolo
  class: sfPropelRoute
  options: { model: Articoli, type: object }
  param: { module: articoli, action: show }
  requirements:
    sf_method: [get]

quello scritto corrisponde al dire a symfony di mostrare una url che abbia una forma del tipo “/articoli/:id/:titolo” dove con il formato “:+nome” diciamo a symfony di aspettarsi una variabile.
Fatto questo siamo costretti a modificare la vista del modulo per fare in modo che siano passati i giusti parametri:


<h2>Lista degli articoli</h2>
<table>
  <thead>
    <tr>
      <th>Titolo</th>
      <th>Data</th>
    </tr>
  </thead>
  <tbody>
    <?php foreach ($Articolis as $Articoli): ?>
    <tr>
      <td><a href="<?php echo url_for(array(
                                        'module' => 'articoli',
                                        'action' => 'show',
                                        'id'     => $Articoli->getId(),
                                        'titolo' => $Articoli->getTitolo(),
                                     )) ?>"><?php echo $Articoli->getTitolo() ?></a></td>
      <td><?php echo $Articoli->getData() ?></td>
    </tr>
    <?php endforeach; ?>
  </tbody>
</table>
<a href="<?php echo url_for('articoli/new') ?>">Aggiungi Articolo</a>

avrete notato il cambiamento di forma nell’helper “url_for”, questo perchè utilizzando questa metodologia possiamo rendere la chiamata più leggibile.
Scrivere l’intero codice mi sembra una cosa inutile che renderebbe il post illegibile, quindi vi fornisco due metodologie per accedere al codice:

1) SVN: svn co http://osiride.no-ip.org/svn/GLiAr
2) WEB: GLiAr

con il primo metodo, per chi non conoscesse svn, potrete scaricare l’intero progetto sul vostro pc ed inoltre vi permette di mantenere aggiornato il progetto con le modifiche da me apportate.

Per il momento vi consiglio di spendere molto tempo sulle rotte e sulla modifica dei moduli. Cercate di raggiungere ottimi risultati essendo pignoli con voi stessi… si impara solo quando non si è mai soddisfatti.

Buon divertimento

Posted in GLiAr, PHP, Progetti Personali, Programmazione, Symfony | Leave a Comment »

G.Li.Ar: le viste (2)

Posted by hosiris su maggio 15, 2010

Nell’ultimo post avevo presentato una modifica di base sulle viste, nel poco tempo a disposizione ho modificato ulteriormente l’aspetto del mio applicativo, senza raggiungere effetti stilistici spettacolari, ma rendendolo più carino da vedere. Ho principalmente modificato il foglio di stile, producendo una soluzione a due colonne:


<!-- web/css/main.css -->
body {
    font-family: Verdana, Arial;
    width: 800px;
    position: absolute;
    left: 50%;
    margin-left: -400px;
}
div#header h1 {
    border: 1px black solid;
    font-size: 24px;
    text-align: center;
    padding: 10px;
}
div#menu {
    float: left;
    display: block;
}
div#menu ul {
    list-style: none;
    margin: 0;
    padding: 10px;
}
div#menu a {
    font-size: 10px;
    text-decoration: none;
    color: #000;
}
div#menu a:hover {
    background: #000;
    color: #aff;
}
div#content {
    font-size: 10px;
    margin: 0 10px 20px 20px;
    float: left;
}
div#footer {
    clear: both;
}
div#footer h3 {
    border: 1px black solid;
    font-size: 8px;
    text-align: center;
    padding: 5px;
}

il codice dovrebbe essere di facile lettura, ma specifico alcuni passaggi importanti. Il body è centrato, quindi tutto il contenuto verrà automaticamente centrato. La soluzione a due colonne è tableless, utilizzando il metodo “float: left” sul div menu e content, non dimenticate di impostare nel div footer la voce: “clear: both” altrimenti il footer andrà a sovrapporsi alle due colonne. Ho modificato i parametri del menu “ul” eliminando le decorazioni tipiche del tag anchor e aggiungendo un effetto rollover al passaggio del mouse.

Il risultato è il seguente:

Certo il bianco e nero, lo rende ancora bruttino, ma per me è già un seccesso così!
Potrete apprezzare il fatto che, tramite il pattern decorator, la struttura base riamarrà costante nella navigazione, mentre quello che starà nel content va modificato. A tal fine io ho lavorato sui template dei moduli “libri” e “articoli”.
Ad esempio una semplice modifica al file “apps/frontend/modules/libri/templates/editSuccess.php” (se non ricordate i nomi dei template, vi ricordo che la vista per una data azione è data dal nome dell’azione + “Success”) porta a questo risultato:

Alla prossima… e come sempre: Buon divertimento!

Posted in GLiAr, PHP, Progetti Personali, Programmazione, Symfony | 2 Comments »

G.Li.Ar: le viste

Posted by hosiris su maggio 8, 2010

Ci siamo lasciati con la creazione dei modelli. Se avete fatto delle prove avrete di certo notato che quasi tutte le funzionalità sono attive, bisogna sistemare poche relazioni tra modelli.
Ma per il momento preoccupiamoci di che aspetto dovrebbe avere la nostra applicazione… io ho un senso estetico pessimo quindi, a parte le modifiche su symfony, vi consiglio di creavi una vostra interfaccia. Io mi limiterò a posizionare i blocchi lì dove voglio.
Modificheremo il template della pagina principale e il template per i moduli Libri e Articoli.
Per modificare il template del frontend, modifichiamo:


<!-- apps/frontend/templates/layout.php -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <?php include_http_metas() ?>
    <?php include_metas() ?>
    <?php include_title() ?>
    <link rel="shortcut icon" href="/favicon.ico" />
    <?php include_stylesheets() ?>
    <?php include_javascripts() ?>
  </head>
  <body>
    <div id="header">
      <h1>G.Li.Ar: GESTIONE LIBRI E ARTICOLI</h1>
    </div>
    <div id="menu">
      <ul>
        <li><a href="<?php echo url_for('libri/index') ?>">Libri</a></li>
        <li><a href="<?php echo url_for('articoli/index') ?>">Articoli</a></li>
        <li><a href="<?php echo url_for('autori/index') ?>">Autori</a></li>
        <li><a href="<?php echo url_for('categorie/index') ?>">Categorie</a></li>
        <li><a href="<?php echo url_for('editori/index') ?>">Editori</a></li>
      </ul>
    </div>
    <div id="content">
      <?php echo $sf_content ?>
    </div>
    <div id="footer">
      <p>Powered by Se]{eM</p>
    </div>
  </body>
</html>

In questo modo abbiamo creato un menù contenente i link a tutti i moduli e abbiamo dato un titolo al nostro sito.
Se ricordiamo come funziona symfony, possiamo facilmente trovare quali file modificare per definire la vista dei moduli: la vista associata all’azione di index sarà indexSuccess, quindi:


<!-- apps/frontend/modules/libri/templates/indexSuccess.php -->
<h2>Lista dei libri</h2>
<table>
  <thead>
    <tr>
      <th>Titolo</th>
      <th>Data</th>
      <th>Isbn</th>
    </tr>
  </thead>
  <tbody>
    <?php foreach ($Libris as $Libri): ?>
    <tr>
      <td><a href="<?php echo url_for('libri/show?id='.$Libri->getId()) ?>"><?php echo $Libri->getTitolo() ?></a></td>
      <td><?php echo $Libri->getData() ?></td>
      <td><?php echo $Libri->getIsbn() ?></td>
    </tr>
    <?php endforeach; ?>
  </tbody>
</table>
<a href="<?php echo url_for('libri/new') ?>">New</a>


<!-- apps/frontend/modules/articoli/templates/indexSuccess.php -->
<h2>Lista degli articoli</h2>
<table>
  <thead>
    <tr>
      <th>Titolo</th>
      <th>Data</th>
    </tr>
  </thead>
  <tbody>
    <?php foreach ($Articolis as $Articoli): ?>
    <tr>
      <td><a href="<?php echo url_for('articoli/show?id='.$Articoli->getId()) ?>"><?php echo $Articoli->getTitolo() ?></a></td>
      <td><?php echo $Articoli->getData() ?></td>
    </tr>
    <?php endforeach; ?>
  </tbody>
</table>
<a href="<?php echo url_for('articoli/new') ?>">New</a>

in questo modo abbiamo presentato solo i dati di interesse. Solo dopo aver cliccato su un elemento verrà mostrata una pagina contenente tutte le informazioni.
Certo questa interfaccia è brutta e magari qualcuno vorrebbe qlcs di più colorito, se conoscete le regole css potete facilmente modificare il file web/style/main.css.
Per il momento è tutto, vedremo come definire le rotte e come trattare le relazioni con cardinalità n ad n, magari definendo prima una interfaccia di login per le operazioni che vogliamo essere fatte solo dal root.

Buon divertimento

Posted in GLiAr, PHP, Progetti Personali, Programmazione, Symfony | Leave a Comment »

G.Li.Ar: lavoriamo sui moduli

Posted by hosiris su maggio 1, 2010

Abbiamo lavorato sul modello e creato la nostra applicazione frontend. Creiamo adesso i nostri moduli:


$ ./symfony propel:generate-module --with-show --non-verbose-templates frontend autori autori
$ ./symfony propel:generate-module --with-show --non-verbose-templates frontend categorie categorie
$ ./symfony propel:generate-module --with-show --non-verbose-templates frontend editori editori
$ ./symfony propel:generate-module --with-show --non-verbose-templates frontend riviste riviste
$ ./symfony propel:generate-module --with-show --non-verbose-templates frontend libri libri
$ ./symfony propel:generate-module --with-show --non-verbose- templates frontend articoli articoli

adesso potete visualizzare entrambi i moduli (ad esempio: http://gliar/frontend_dev.php/libri). Se provate ad aggiungere un elemento noterete la presenza di un errore, questo perchè synfony necessita di una rappresentazione testuale degli elementi, per cui in ogni classe del modello aggiungiamo il seguente codice:


// lib/model/Articoli.php
public function __toString(){
  return $this->getTitolo();
}
// lib/model/Autori.php
public function __toString(){
  return sprintf('$s $s', $this->getNome(), $this->getCognome());
}
// lib/model/Categorie.php
public function __toString(){
  return $this->getName();
}
// lib/model/Editori.php
public function __toString(){
  return $this->getName();
}
// lib/model/Libri.php
public function __toString(){
  return $this->getTitolo();
}
// lib/model/Riviste.php
public function __toString(){
  return $this->getName();
}

Attenzione a mettere il doppio underscore prima di toString.
Per il momento finisco qua, mi aspettano 14 ore di autobus…

Posted in GLiAr, PHP, Progetti Personali, Programmazione, Symfony | Leave a Comment »