2015-08-25

Symfony2 - debugowanie skryptów uruchamianych z konsoli

Istnieje możliwość debugowania kodu odpalanego z konsoli (app/console). Aby móc cieszyć się takim dobrodziejstwem wystarczy:

w php.ini (dla cli) wpisać:

xdebug.remote_enable=1

przed poleceniem app/console wpisać:

SERVER_PORT=9000 SERVER_NAME='PHPSTORM' php -dxdebug.remote_autostart=On app/console test

2015-08-06

Symfony2 - FOSJsRoutingBundle

Za pomocą bundla FOSJsRoutingBundle można korzystać z routingu Symfony w javascriptowym kodzie. Poniżej krótki przykład:

PHP:

 /**
  * @Route("/ks", options={"expose" = true}, name="nfz.raport_wykbadpoz_kolumny_standardowe")
  * @Template("raport/kolumny_standardowe.html.twig")
  *
  * @return array
  */
 public function kolumnyStandardoweAction()
 {
  $ar_kolumny_standardowe = $this->raportWykbadpozManager->getKolumnyStandardowe();
  return compact('ar_kolumny_standardowe');
 }

JavaScript:

$.wczytajKolumnyStandardowe = function(url){
    var kolumny_standardowe = $("#kolumny_standardowe");

    $.post(Routing.generate("nfz.raport_wykbadpoz_kolumny_standardowe"), {}, function(data){
        kolumny_standardowe.html(data);
    });
};
Należy pamiętać o options={"expose" = true} w annotacjach. Więcej informacji na githubie.

2015-08-05

Symfony2 form - wynik w innej akcji i w nowym oknie

W Symfony po submicie formularza wracamy do tej samej akcji (w naszym przypadku do indexAction()). Aby to zmienić wystarczy dodać odpowiednią opcję przy tworzeniu obiektu formularza (form). Istnieje również możliwość otworzenia wyniku w nowym oknie. Całość można zobaczyć w poniższym kodzie:

 /**
  * @Route("/", name="nfz.raport_wykbapoz")
  * @Template()
  *
  * @return array
  */
 public function indexAction()
 {
  //...
  $form = $this->createForm('nfz_raport_wykbadpoz', $object, [
   'action' => $this->generateUrl('nfz.raport_wykbadpoz_wynik'),
   'attr' => [
    'target' => '_blank'
   ]
  ]);

  return [
   'form' => $form->createView()
  ];
 }

 /**
  * @Route("/wynik", name="nfz.raport_wykbadpoz_wynik")
  * @Template()
  *
  * @param Request $request
  * @return array
  */
 public function wynikAction(Request $request)
 {
  //zabezpieczenie malutkie
  if($request->getMethod() != 'POST') {
   return new RedirectResponse($this->generateUrl('nfz.raport_wykbapoz'));
  }

  //utworzenie obiektu formularza
  $form = $this->createForm('nfz_raport_wykbadpoz');
  //pobranie danych z submitowanego formularza
  $form->handleRequest($request);

  //walidacja formularza
  if($form->isValid()){
   //pobranie danych z formularza
   $data = $form->getData();
  }
  //...
  return [];
 }

Widać tutaj, że funkcja kontrolera wynikAction() przchwytuje dane z submitowanego w indexAction() formularza.

2015-08-04

Wyświetlenie okienka potwierdzającego po kliknięciu w link

Czasem przed wykonaniem pewnej akcji (np. przed usunięciem pozycji) chcemy wyświetlić okienko potwierdzające czy na pewno wykonać daną czynność. Aby to zrobić wystarczy dodać do linka atrybut onclick:

Twig:
Usuń
Javacript:
function confirmDelete(id) {
    return confirm("Czy na pewno usunąć wybraną pozycję (" + id + ")?");
}

2015-08-02

Zmiana formatu daty w Joomla! 3.4.3

Załóżmy, że utworzyliśmy artykuł w piątek, 24 lipiec 2015. Jak widać odmiana miesiąca nie jest prawidłowa - można się pobawić i stworzyć funkcję, która prawidłowo (po Polsku) odmienia miesiące. Ja jednak na potrzeby swojego projektu zmienię po prostu format daty - z piątek, 24 lipiec 2015 na piątek, 24-07-2015.
Aby tego dokonać wystarczy zmienić jedną linię w pliku language/overrides/pl-PL.override.ini:

DATE_FORMAT_LC3="l, d F Y"

na 

DATE_FORMAT_LC3="l, d-m-Y"