Symfony 1.4: Dottrina i18n problemi generatore
-
30-09-2019 - |
Domanda
Ho un problema strano con il mio schema dottrina i18n e i.a. generator.
(Si prega di guardare la parte modifica sotto prima)
L'aspetto dello schema del tipo:
CargoSize:
connection: doctrine
actAs:
Timestampable: ~
I18n:
fields: [name, linkname, seoname, description]
tableName: com_cargo_size
columns:
id: { type: integer(11), notnull: true, unsigned: true, primary: true, autoincrement: true }
name: { type: string(50), notnull: true }
linkname: { type: string(100), notnull: true }
seoname: { type: string(100), notnull: true }
description: { type: string(255), notnull: true }
Il primo problema che ho con sfForms:
new sfWidgetFormDoctrineChoice(array('model' => 'CargoSize', 'expanded' => true, 'multiple' => false), array('style' => 'list-style-type: none; display: inline;'))
Questo genera un apparecchio radio butten con gli ID corretti, ma valori dei nomi vuoti. Anche quando cerco di ottenere il valore del nome selezionando direttamente un oggetto CargoSize per ID e LANG, getName () restituisce sempre una stringa vuota (DB viene riempito correttamente con i dati adatto).
Quindi è worng somethng con la definizione dello schema ??
La seconda appare problema con l'admin-generatore:
php symfony doc:generate-admin --module=cargo_size admin CargoSize
L'aspetto generator.yml come:
generator:
class: sfDoctrineGenerator
param:
model_class: CargoSize
theme: admin
non_verbose_templates: true
with_show: false
singular: ~
plural: ~
route_prefix: cargo_size
with_doctrine_route: true
actions_base_class: sfActions
config:
actions: ~
fields: ~
list:
display: [name, lang]
filter: ~
form: ~
edit:
display: [name]
new: ~
La cosa divertente è, che la vista della lista mi mostra il nome i18n. Ma in Vista di modifica ottengo sempre l'errore di " 'nome' widget di non esiste" .
voi ragazzi avete qualche idea del perché questo accade? Sarei molto grato per il vostro aiuto.
Modifica
Credo che il problema si trova più profondo, perché questo semplice pace del codice funziona Nota:
In primo luogo i set di dati per gli esempi:
cargo_size
id created_at updated_at
1 2010-04-22 21:37:44 2010-04-22 21:37:44
cargo_size_translation
id name linkname seoname description lang
1 klein klein klein klein de
1 small small small small en
$c = Doctrine::getTable('CargoSize')->findOneBy('id', 1);
echo $c; // (toString exists)
// Output: Catchable fatal error: Method CargoSize::__toString()
// must return a string value in
// /var/www/.../apps/frontend/modules/start/templates/indexSuccess.php on line 1
echo $c->getName();
// Output: nothing
C'è qualcuno che ha qualche idea? Sono davvero deperated: (
Soluzione 2
Ho trovato il bug. Per qualche ragione la cultura è stata impostata su " de_DE " invece di "de". Con questa impostazione la roba comportamento i18n non ha funzionato!
Altri suggerimenti
Primo problema:
I "nomi" valori visualizzati sono prese dal __toString () risultato metodo. Si potrebbe aggiungere le opzioni di "metodo", in questo modo:
new sfWidgetFormDoctrineChoice(array('model' => 'CargoSize', 'expanded' => true, 'multiple' => false, 'method' => 'getName'), array('style' => 'list-style-type: none; display: inline;'))
Secondo problema:
Il modulo deve incorporare il form i18n. Per fare questo, mettere questo nel metodo di configurazione:
$this->embedI18n($cultures);
dove $ culture è un array dei vostri codici di culture.