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.
0 commenti:
Posta un commento