Per trasformare i moduli Symfony in liste ho creato un nuovo tipo di modulo ListType che accetta il tipo di raccolta annidata arbitraria. In questo modo posso creare liste con varie colonne. Assomiglierà a:
class ListType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
if (empty($options['collection_type']) || !$options['collection_type'] instanceof AbstractType) {
throw new \InvalidArgumentException();
}
$builder->add('rows', 'collection', array('type' => $options['collection_type']));
$builder->add('save', 'submit', array('label' => 'Save'));
}
...
}
Userò la matrice $ options per fornire o attivare o disattivare altre funzioni come il filtro di ricerca e l'impaginazione.
Al fine di avere una semplice interfaccia per la visualizzazione di liste come:
{{ list(list) }}
ho creato Twig estensione:
class ListExtension extends \Twig_Extension
{
public function getFunctions()
{
return array(
new \Twig_SimpleFunction('list', array($this, 'listFunction'), array('is_safe' => array('html'), 'needs_environment' => true))
);
}
public function listFunction(\Twig_Environment $env, FormView $form)
{
return $env->resolveTemplate($this->defaultTemplate)->renderBlock('list', array('form' => $form));
}
...
}
Rende "lista" di blocco Twig. Aggiungerò anche altri sotto blocchi allo stesso modo. Questa estensione fornisce una maggior quantità di feed rispetto ai blocchi "form".
ho registrato lista delle estensioni come servizio:
# app/config/services.yml
services:
my.twig.list.extension:
class: MyBundle\Twig\Extension\ListExtension
arguments: ["::my_theme.html.twig"]
public: false
tags:
- { name: twig.extension }
Ora devo solo a creare una forma di mia ListType e passarlo una serie di entità fila.
Grazie a Elias Van Ootegem per avermi indicato nella giusta direzione.
Cosa stai cercando di fare qui, per me almeno, sembra meglio affrontare con Twitter bootstrap (per il bit CSS), e [il Paginator KNP] (http: //knplabs.com/en/blog/knp-paginator-reborn), che è un pacchetto di paginatori più che capace per SF2. Detto questo, ritengo che questa domanda sia leggermente fuori tema, dato che non sembra che si tratti di un problema specifico legato al codice, è più di un tipo di domanda "Come iniziare" di tipo _ (se hai bisogno di un corso intensivo su SF2, controlla il ricettario Symfony sul loro sito, è abbastanza buono, davvero) –
Ho già controllato il libro di cucina ma non descrive come creare liste. Vedo che posso crearli in twig, ma mi piace l'interfaccia di costruzione di moduli. Poiché ho bisogno di elenchi modificabili che possono avere campi come i moduli, ho provato a eseguire il debug dei moduli per capire dove posso collegarmi. Vedo che dovrei sostituire PropertyPathMapper per gestire le righe di dati, ma questo è solo un inizio. Quindi speravo che ci fosse una soluzione più semplice per modificare i moduli affinché funzionassero come liste. – pbosko
Utilizzare i moduli come elenchi non è così difficile, e sicuramente non richiede di scavare più in profondità come il "ProperyPathMapper", un semplice modello di ramoscello e un tipo di modulo personalizzato nidificato dovrebbero fare, entrambi sono coperti dal libro di ricette di symfony e spiegato in dettaglio nei documenti di symfony2 –