.: HosiriS :.

Informatica e non solo

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” 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

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

 
%d blogger cliccano Mi Piace per questo: