Autor wpisu: batman, dodany: 20.06.2010 13:00, tagi: zend_framework
Każda aplikacja biznesowa posiada opcję zapisz jako CSV. Najczęściej w takim przypadku tworzony jest osobny skrypt, który pobiera dane z bazy i udostępnia je w odpowiednim formacie. Twórcy Zend Frameworka wyszli na przeciw potrzebom programistów i udostępnili helper akcji o nazwie ContextSwitch, który w skrócie można opisać jako mechanizm do zwracania danych w zadanym formacie.
Domyślnie ContextSwitch ofertuje dwa formaty. Są to JSON oraz XML. Jeśli chcemy, aby nasza aplikacja zwracała dane w innym formacie, musimy stworzyć własny kontekst. Sprowadza się to do określenia nazwy kontekstu oraz określenia dodatkowych parametrów, takich jak suffix pliku widoku, nagłówki jakie zostaną użyte w przypadku zastosowania kontekstu oraz funkcje zwrotne, które zostaną wywołane w metodzie init lub postDispatch podczas obsługi danego kontekstu. Żadna z wspomnianych wyżej opcji nie jest wymagana, jednak aby użycie kontekstu miało sens, należy ustawić co najmniej suffix. W przypadku funkcjonalności polegającej na pobieraniu danych, należy dodać jeszcze odpowiednie nagłówki:
$contextSwitch = $this->_helper->getHelper('ContextSwitch'); $contextSwitch->addContext('csv', array( 'suffix' => 'csv', 'headers' => array( 'Content-Type' => 'text/csv', 'Content-Disposition' => 'attachment; filename=nazwa-pliku.csv' ) )); $contextSwitch->addActionContext('index', 'csv') ->initContext();
Drugim i zarazem ostatnim krokiem jest stworzenie odpowiedniego pliku widoku ze wskazanym wcześniej suffixem.
Obok CSV można stworzyć kontekst RSS/ATOM, vCard, PDF i wiele innych.
Przykładową aplikację korzystającą z ContextSwitch znajdziecie w repozytorium SVN.