Ich habe folgendes Schema:Wie kann man zu einem späteren Zeitpunkt eine zweite Sprache für die Internationalisierung hinzufügen?
<!-- language: lang-xml -->
<table name="blog" phpName="Blog">
<column name="id" type="INTEGER" required="true" primaryKey="true" autoIncrement="true" />
<column name="title" phpName="Title" type="VARCHAR" size="100" required="true" />
<column name="short_link" phpName="ShortLink" type="VARCHAR" size="64" required="false" />
<column name="description" phpName="Description" type="LONGVARCHAR" required="false" />
<column name="content" phpName="Content" type="LONGVARCHAR" required="false" />
<column name="visibility" phpName="Visibility" type="INTEGER" default="-1" required="true" />
<behavior name="i18n">
<parameter name="i18n_columns" value="title, short_link, description, content" />
</behavior>
<behavior name="timestampable" />
<behavior name="soft_delete" />
<behavior name="versionable" />
</table>
<table name="blog_i18n" phpName="blogi18n">
<column name="id" type="INTEGER" required="true" primaryKey="true" />
<column name="locale" type="VARCHAR" size="5" required="true" primaryKey="true" />
<column name="title" phpName="Title" type="VARCHAR" size="100" required="false" />
<column name="short_link" phpName="ShortLink" type="VARCHAR" size="64" required="false" />
<column name="description" phpName="Description" type="LONGVARCHAR" required="false" />
<column name="content" phpName="Content" type="LONGVARCHAR" required="false" />
<foreign-key foreignTable="blog" onDelete="setnull" onUpdate="cascade">
<reference local="id" foreign="id" />
</foreign-key>
<behavior name="timestampable" />
<behavior name="soft_delete" />
<behavior name="versionable" />
</table>
Wenn ich einen neuen Beitrag hinzufügen, fügt es eine Sprache (Haupt App Sprache), die Idee ist, die Option für weitere Sprachen zu einem späteren Zeitpunkt zu verlassen.
dies ist der Code, der die Post ergänzt: bis hier alle Werke schön wie erwartet, aber wenn ich versuche, auszuführen bearbeitet, auf welcher Sprache auch immer, es tut
<!-- language: lang-php -->
public function addBlogPost(Application $app) {
$data = array (
'title' => $app['request']->get('Title'),
'language' => $app['request']->get('Language'),
'short-link' => $this->createShortLink($app, $app['request']->get('Title')),
'description' => $app['request']->get('Description'),
'content' => $app['request']->get('Content')
);
$blog = new Blog();
$blog->setLocale($data['language']);
$blog->setTitle($data['title']);
$blog->setShortLink($data['short-link']);
$blog->setDescription($data['description']);
$blog->setContent($data['content']);
try {
$blog->save();
$app['session']->getFlashBag()->add(
'success',
'success_add_blog_text'
);
return $app->redirect($app['url_generator']->generate('adminBlog'));
} catch (PropelException $pe) {
$app['session']->getFlashBag()->add(
'error',
'error_add_blog_text'
);
return $app->redirect($app['url_generator']->generate('adminBlog'));
}
}
Up Arbeit.
<!-- language: lang-php -->
public function editBlogPost(Application $app) {
$id = $app['request']->get('id');
$lang = $app['request']->get('language');
if(!is_numeric($id)) {
$app['session']->getFlashBag()->add(
'error',
'blog_doesnt_exists_text'
);
return $app->redirect($app['url_generator']->generate('adminBlog'));
}
$data = array (
'id' => $app['request']->get('id'),
'language' => $app['request']->get('language'),
'title' => $app['request']->get('title'),
'short-link' => $app['request']->get('short-link'),
'description' => $app['request']->get('description'),
'content' => $app['request']->get('content')
);
$post = BlogQuery::create();
$post->setLocale($data['language']);
$post->setTitle($data['title']);
$post->setShortLink($data['short-link']);
$post->setDescription($data['description']);
$post->setContent($data['content']);
try {
$post->save();
$app['session']->getFlashBag()->add(
'success',
'success_edit_blog_text'
);
return $app->redirect($app['url_generator']->generate('adminBlog'));
} catch (PropelException $pe) {
$app['session']->getFlashBag()->add(
'error',
'error_edit_blog_text'
);
return $app->redirect($app['url_generator']->generate('adminBlog'));
}
}
Fehler 500.
nicht definierte Methode ModelCriteria :: setLocale()
ist, was ich bekommen. Soll ich stattdessen mit Blogl18nQuery bearbeiten? Oder mache ich es von Anfang an falsch?
Wie instanziieren Sie 'ModelCriteria'? 'setLocale()' ist offensichtlich nicht im Bereich. – Marcus
hmm! Es scheint, es ist nicht auf BlogQuery, dann wieder scheint es "Bearbeiten" ist nicht der Ort, um neue Sprachen hinzuzufügen ... gona einen Vergleich versuchen und vielleicht eine private Methode, um neue Sprachen hinzuzufügen! lass euch wissen, was ich finde – JLChafardet