Nota: Quello che sto facendo qui è embedding controllers < --- vedere che link per una simile (ufficiale) esempio.Symfony2 - Twig rendere controller e tornare risposta gamma
voglio chiamare un controller da un modello ramoscello, e hanno quel controller restituire un array che posso utilizzare in tutto il resto del mio modello.
posso farlo con variabili individuali:
Ramoscello
{% set testVar = render(controller('AppBundle:Test:index')) %}
controller
class TestController extends Controller
{
public function testAction()
{
return new Response('OH HAI');
}
}
Tuttavia, il seguente genera un'eccezione: ("The Response content must be a string or object implementing __toString(), "array" given.")
con lo stesso ramoscello file.
public function testAction()
{
return new Response(array('test' => 1, 'foo' => 'bar'));
}
Questo genera l'eccezione sopra. Come posso ottenere ciò che cerco senza creare un modello extra fittizio e inutile per il controller per il rendering?
Quello che stai cercando di fare è la rottura del pattern MVP (stai provando a mettere la logica in view layer). Il mio consiglio è ripensare alla tua soluzione. Forse se dici di più quello che vuoi ottenere, posso dire di più. Saluti! – Cyprian
Grazie per la risposta @Cyprian, mi sono sbagliato a farlo, quindi forse c'è un altro modo. La mia vista è suddivisa in 3 modelli di ramoscello che estendono un modello di layout: ** header **, ** sidebar ** e ** content **. La * barra laterale * richiede dati dinamici per ogni caricamento della pagina (alcune statistiche live, ad esempio). Ho bisogno che la barra laterale contenga questi dati, qualunque cosa sia nel modello * content *. – Jimbo
Il mio obiettivo era quello di codificare la barra laterale, recuperando i propri dati da un controller separato, e quindi tutto ciò che codice in futuro sono solo le pagine di contenuto e non ho bisogno di duplicare alcun codice per ottenere le statistiche per la barra laterale. – Jimbo