Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][SF2][Symfony2]Emaila w sonata
Forum PHP.pl > Forum > PHP > Frameworki
Crash89
Chciałbym stworzyć możliwość definiowania wiadomości email w panelu Sonata.
Mam tutaj na myśli, że admin tworzy wiadomość email i po kliknięciu na wyślij jest wysyłana do wszystkich użytkowników.
Jest w sonacie coś takiego możliwe?

pozdrawiam
kpt_lucek
Tak
Crash89
A jest gdzieś to opisane? szukałem w googlach i nie mogę nic znaleźć.
Samo potwierdzenie rejestracji i resetowanie hasła to już mam z fos user bundle.
Chcę tylko tworzyć wiadomość własną na jakiś temat i móc rozesłać ją do wszystkich użytkowników.

Meil ma mieć temat i treść.


kpt_lucek
A dlaczego zakładasz, że jest na to gotowiec?

Skoro jest jak mówisz i nie ma tego "out of the box" to najlepszym rozwiązaniem jest to napisać, nie mniej jednak, jest to możliwe.
Crash89
Nie szukam gotowca, tylko opis samego mechanizmu do meili w sonacie.

W sonacie jestem początkujący i nie za bardzo jeszcze wiem jak zrobić coś niestandardowego.
kpt_lucek
A czym jest "mechanizm do meili w sonacie"?

Z tego co wiem, to sonata nie ma dedykowanego mechanizmu do tego typu operacji, a to znaczy, że jeżeli cokolwiek tam jest, to jest to oparte o SwiftMailer zawarty w Symfony 2/3.

A jak to zrobić?

Pewnie zapiszesz html w formie tekstu w bazie danych (jakiejkolwiek), zapewne będziesz chciał korzystać w nim z TWIG'a, więc będziesz musiał utworzyć obiekt, który zamiast linku do templatki przyjmuje string (templatkę), a to po "renderingu" wpakujesz jako BODY do wiadomości?
Boshi
Cytat(Crash89 @ 7.10.2016, 22:37:59 ) *
Nie szukam gotowca, tylko opis samego mechanizmu do meili w sonacie.

W sonacie jestem początkujący i nie za bardzo jeszcze wiem jak zrobić coś niestandardowego.


Możesz wykorzystać batch action, napisać własną logikę z rozsyłaniem emaili.
Crash89
Myślałem żeby meil zawierał tytuł i treść, którą będzie można wypełnić przez CKEditor.
To sobie admin wypełni w formularzu.
Na koniec wybierze grupę użytkowników do której ma trafić wiadomość.
Zamierzam wykorzystać SwiftMailer, choć jeszcze z niego nie korzystałem.

Dzięki za rady

Cytat(Boshi @ 8.10.2016, 10:52:05 ) *
Możesz wykorzystać batch action, napisać własną logikę z rozsyłaniem emaili.


Próbuję wykorzystać batch action ale wyskakuje mi błąd przy dodawaniu akcji, oto on:

A `Sonata\AdminBundle\Controller\CRUDController::batchActionSend` method must be callable

Robię wszystko jak jest w dokumentacji.
Oto mój kod:

  1. <?php
  2.  
  3. namespace AppBundle\Controller;
  4.  
  5. use Sonata\AdminBundle\Controller\CRUDController as BaseController;
  6. use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
  7. use Symfony\Component\HttpFoundation\RedirectResponse;
  8. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  9.  
  10. class CRUDController extends BaseController
  11. {
  12. /**
  13.   * @param ProxyQueryInterface $selectedModelQuery
  14.   * @param Request $request
  15.   *
  16.   * @return RedirectResponse
  17.   */
  18. public function batchActionSend(ProxyQueryInterface $selectedModelQuery, Request $request = null)
  19. {
  20. var_dump($selectedModelQuery);
  21. die();
  22. return new RedirectResponse(
  23. $this->admin->generateUrl('list', array('filter' => $this->admin->getFilterParameters()))
  24. );
  25. }
  26.  
  27. }



EmailAdmin:
  1. public function getBatchActions()
  2. {
  3. // retrieve the default batch actions (currently only delete)
  4. $actions = parent::getBatchActions();
  5.  
  6.  
  7. $actions['send'] = array(
  8. 'label' => 'Wyślij',
  9. 'translation_domain' => 'SonataAdminBundle',
  10. 'ask_confirmation' => true
  11. );
  12.  
  13.  
  14.  
  15. return $actions;
  16. }


Wydaje się jak by nie korzystał z tego nowego kontrolera, tylko pobierał ten z sonaty.
Boshi
Zarejestrowałeś serwis w admin.yml?
Crash89
Cytat(Boshi @ 17.12.2016, 16:36:41 ) *
Zarejestrowałeś serwis w admin.yml?


Nie, w dokumentacji na ten temat nic nie ma.
Ale próbowałem coś takiego zrobić w services.yml

  1. app.admin.EmailAdmin:
  2. class: AppBundle\Admin\EmailAdmin
  3. arguments: [ null, AppBundle\Entity\Email, AppBundle:Admin\EmailAdmin ]


Może źle to definiuję, zmieniłem sobie nazwe z CRUDController na emailAdminController
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.