mercoledì 14 ottobre 2009

Lyra, visualizzazione articolo

Dopo aver implementato, almeno a grandi linee, l'azione index per la visualizzazione dell'elenco articoli in prima pagina, passiamo all'azione show che serve a visualizzare un singolo articolo a tutta pagina. Il procedimento è del tutto analogo a quello visto in precedenza per cui non mi dilungo molto.

apps/frontend/modules/article/actions/actions.class.php

class articleActions extends sfActions
{
...
  public function executeShow(sfWebRequest $request)
  {
    $this->item = Doctrine::getTable('LyraArticle')
      ->find($request->getParameter('id'));
    $this->forward404Unless($this->item);
  }
...

Il metodo find() seleziona uno o più record in base alla chiave primaria. Come si è visto nell'articolo precedente quando si sono generati i link 'leggi tutto' la rotta per la pagina di un articolo ha il formato

article/show/id/x

dove x è il valore del campo ID chiave primaria del record; questo valore viene passato nella richiesta e letto con il metodo getParameter() della classe sfWebRequest.

Il metodo forward404Unless() genera un errore 404 se l'argomento che gli viene passato è false, cioè se il metodo find() non ha trovato un record con chiave corrispondente.

Passiamo al template corrispondente all'azione show: il codice generato automaticamente dal framework è sostituito dal seguente:

apps/frontend/modules/article/templates/showSuccess.php

<h1 class="article-title">
  <?php echo $item->getTitle() ?>
</h1>
<?php if($item->getSubtitle()): ?>
  <div class="article-subtitle">
    <?php echo $item->getSubtitle() ?>
  </div>
<?php endif ?>
<div class="article-date">
  <?php echo $item->getCreatedAt() ?>
</div>
<div class="article-content">
  <?php echo $item->getContent(ESC_RAW) ?>
</div>

$item è l'articolo che deve essere visualizzato, un oggetto istanza della classe LyraArticle. I valori dei campi si ottengono con i metodi già incontrati.

Esiste un campo sottotitolo che ho incluso solo nella visualizzazione dell'articolo a tutta pagina, se lo si vuole visualizzare anche quando gli articoli sono mostrati con sommario e 'leggi tutto' basta aggiungere il blocco nel partial _list.php.

Oggi si lavora poco, con queste modifiche siamo alla revisione 10.

Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.