Mariusz Madanowski

Mariusz Madanowski Webdeveloper,
AGProjects

Temat: Pomoc w zgraniu razem Gedmo translatable i sluggable

Witam, mam pewien problem opisany tutaj: http://symfonylab.pl/forum/index.php/topic,613.0.html
Będę wdzięczny ja jakąkolwiek pomoc :)
Krzysztof N.

Krzysztof N. CEO. Aplikacje
internetowe i
mobilne. Symfony,
Zend.

Temat: Pomoc w zgraniu razem Gedmo translatable i sluggable

Mariusz M.:
Witam, mam pewien problem opisany tutaj: http://symfonylab.pl/forum/index.php/topic,613.0.html
Będę wdzięczny ja jakąkolwiek pomoc :)
Przetestuj dla takiej konfiguracji:

/app/config/config.yml
doctrine:
dbal:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
# if using pdo_sqlite as your database driver, add the path in parameters.yml
# e.g. database_path: "%kernel.root_dir%/data/data.db3"
# path: "%database_path%"

orm:
auto_generate_proxy_classes: "%kernel.debug%"
#auto_mapping: true
entity_managers:
default:
auto_mapping: true
filters:
softdeleteable:
class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
enabled: true
mappings:
gedmo_translatable:
type: annotation
prefix: Gedmo\Translatable\Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"
alias: GedmoTranslatable # this one is optional and will default to the name set for the mapping
is_bundle: false
/app/config/services.yml
services:
gedmo.listener.translatable:
class: Gedmo\Translatable\TranslatableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
#- [ setPersistDefaultLocaleTranslation, [ true ] ]
- [ setDefaultLocale, [ %locale% ] ]
- [ setTranslationFallback, [ false ] ]
Mariusz Madanowski

Mariusz Madanowski Webdeveloper,
AGProjects

Temat: Pomoc w zgraniu razem Gedmo translatable i sluggable

Dzięki za odpowiedź. Problem już sam rozwiązałem w piątek. Konfiguracja była w porządku.

W Entity dodalem w takiej kolejności:


use Gedmo\Sluggable\Sluggable;
use Gedmo\Translatable\Translatable;
use Gedmo\Mapping\Annotation as Gedmo;


A akcja w kontrolerze wygląda teraz tak:

public function addAction(Request $request)
{
if ($request->getMethod() == 'POST') {
$tag = new Tag();
$em = $this->getDoctrine()->getManager();

$formArray = $request->request->get('formTag');

$repository = $em->getRepository('PortalCmsBundle:Article');

$tag->setName($formArray['name']);
$tag->setCreated(new \DateTime('now', new \DateTimeZone('Europe/Warsaw')));

$validator = $this->get('validator');
$errors = $validator->validate($tag);

if (count($errors) > 0) {
foreach ($errors as $error) {
$this->message .= $error->getPropertyPath().' <-- '.$error->getMessage().'
';
}
} else {
$em->persist($tag);
if (isset($formArray['articles'])) {
foreach ($formArray['articles'] as $article_id) {
$article = $repository->find((int)$article_id);
$article_tag = new ArticleTag($article, $tag);
$em->persist($article_tag);
}
}
$em->flush();
$tag->setTranslatableLocale('en');
$tag->setName($formArray['name_en']);
$em->flush();
$tag->setTranslatableLocale('de');
$tag->setName($formArray['name_de']);
$em->flush();

$this->message = 'Tag dodany';
}

return $this->redirect($this->generateUrl(
'admin_tags',
array(
'message' => $this->message,
'messageType' => $this->messageType
)
));
}


I działa :)
Krzysztof N.

Krzysztof N. CEO. Aplikacje
internetowe i
mobilne. Symfony,
Zend.

Temat: Pomoc w zgraniu razem Gedmo translatable i sluggable

Mariusz M.:
Dzięki za odpowiedź. Problem już sam rozwiązałem w piątek.
Napisz, proszę, co było przyczyną wskazując konkretne różnice :]
Mariusz Madanowski

Mariusz Madanowski Webdeveloper,
AGProjects

Temat: Pomoc w zgraniu razem Gedmo translatable i sluggable

[code]
$em->flush();
$tag->setTranslatableLocale('en');
$tag->setName($formArray['name_en']);
$em->flush();
$tag->setTranslatableLocale('de');
$tag->setName($formArray['name_de']);
$em->flush();
[\code]
Najpierw zapisuję do bazy name dla wersji polskiej (slug też się generuje i zapisuje), potem kolejno dla innych języków:
[code]
$tag->setTranslatableLocale('en');
$tag->setName($formArray['name_en']);
$em->flush();
[/code]

Następna dyskusja:

[symfony2] - adminBundle + ...




Wyślij zaproszenie do