Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF][SF2][Symfony2]Emaila w sonata
Crash89
post 7.10.2016, 20:22:47
Post #1





Grupa: Zarejestrowani
Postów: 191
Pomógł: 7
Dołączył: 3.04.2013

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
kpt_lucek
post 7.10.2016, 20:43:55
Post #2





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Tak


--------------------


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
Go to the top of the page
+Quote Post
Crash89
post 7.10.2016, 21:34:01
Post #3





Grupa: Zarejestrowani
Postów: 191
Pomógł: 7
Dołączył: 3.04.2013

Ostrzeżenie: (0%)
-----


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ść.


Go to the top of the page
+Quote Post
kpt_lucek
post 7.10.2016, 21:36:21
Post #4





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.


--------------------


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
Go to the top of the page
+Quote Post
Crash89
post 7.10.2016, 21:37:59
Post #5





Grupa: Zarejestrowani
Postów: 191
Pomógł: 7
Dołączył: 3.04.2013

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Crash89 7.10.2016, 21:42:54
Go to the top of the page
+Quote Post
kpt_lucek
post 7.10.2016, 21:43:44
Post #6





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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?


--------------------


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
Go to the top of the page
+Quote Post
Boshi
post 8.10.2016, 10:52:05
Post #7





Grupa: Zarejestrowani
Postów: 342
Pomógł: 15
Dołączył: 30.08.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Crash89
post 16.12.2016, 14:48:36
Post #8





Grupa: Zarejestrowani
Postów: 191
Pomógł: 7
Dołączył: 3.04.2013

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Crash89 10.10.2016, 13:55:32
Go to the top of the page
+Quote Post
Boshi
post 17.12.2016, 16:36:41
Post #9





Grupa: Zarejestrowani
Postów: 342
Pomógł: 15
Dołączył: 30.08.2011

Ostrzeżenie: (0%)
-----


Zarejestrowałeś serwis w admin.yml?

Ten post edytował Boshi 17.12.2016, 16:36:53
Go to the top of the page
+Quote Post
Crash89
post 17.12.2016, 18:03:58
Post #10





Grupa: Zarejestrowani
Postów: 191
Pomógł: 7
Dołączył: 3.04.2013

Ostrzeżenie: (0%)
-----


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

Ten post edytował Crash89 17.12.2016, 18:29:04
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:13