2010-12-06 4 views
0

i ont ce schéma:symfony 1.4: question sur l'accès à une classe d'enfants d'une classe parente

shop_products: 
    _attributes: { phpName: ShopProduct } 
    products_id: { phpName: Id, type: INTEGER, size: '11', primaryKey: true, autoIncrement: true, required: true } 
    products_quantity: { phpName: Quantity, type: INTEGER, size: '4', required: true } 
    products_model: { phpName: Model, type: VARCHAR, size: '12', required: false } 
    products_image: { phpName: Image, type: VARCHAR, size: '64', required: false } 
    products_price: { phpName: Price, type: DECIMAL, size: '15', scale: '4', required: false, defaultValue: '0.0000' } 
    products_date_added: { phpName: DateAdded, type: TIMESTAMP, required: true } 
    products_last_modified: { phpName: LastModified, type: TIMESTAMP, required: false } 
    products_date_available: { phpName: DateAvailable, type: TIMESTAMP, required: false } 
    products_weight: { phpName: Weight, type: DECIMAL, size: '5', scale: '2', required: true } 
    products_carati: { phpName: Carati, type: FLOAT, required: false, defaultValue: '1' } 
    products_status: { phpName: Status, type: TINYINT, size: '1', required: true } 
    manufacturers_id: { phpName: ManufacturerId, type: INTEGER, size: '11', required: false, foreignTable: shop_manufacturers, foreignReference: manufacturers_id, onDelete: SETNULL } 
    products_ordered: { phpName: Ordered, type: INTEGER, size: '11', required: true, defaultValue: '0' } 


    shop_categories: 
    _attributes: { phpName: ShopCategory } 
    categories_id: { phpName: Id, type: INTEGER, size: '11', primaryKey: true, autoIncrement: true, required: true } 
    categories_image: { phpName: Image, type: VARCHAR, size: '64', required: false } 
    parent_id: { phpName: ParentId, type: INTEGER, size: '11', required: true, defaultValue: '0', foreignTable: shop_categories, foreignReference: categories_id, onDelete: CASCADE, onUpdate: CASCADE } 
    sort_order: { phpName: SortOrder, type: INTEGER, size: '3', required: false } 
    date_added: { phpName: DateAdded, type: TIMESTAMP, required: false } 
    last_modified: { phpName: LastModified, type: TIMESTAMP, required: false } 



    shop_categories_description: 
    _attributes: { phpName: ShopCategoryDescription } 
    categories_id: { phpName: CategoryId, type: INTEGER, size: '11', primaryKey: true, required: true, defaultValue: '0', foreignTable: shop_categories, foreignReference: categories_id, onDelete: CASCADE, onUpdate: CASCADE } 
    language_id: { phpName: LanguageId, type: INTEGER, size: '11', primaryKey: true, required: true, defaultValue: '1', foreignTable: culture, foreignReference: id, onDelete: CASCADE, onUpdate: CASCADE } 
    categories_name: { phpName: Name, type: VARCHAR, size: '32', required: true } 

Puis, je l'ai créé un module d'administration du modèle ShopProducts, mais lorsque je tente d'aller à ce qu'il dit:

méthode

classe "ShopCategory" doit mettre en œuvre un "__toString" à rendre dans un "sfWidgetFormPropelChoice" widget de

Comme vous pouvez le voir, le modèle où sont les noms des catégories est ShopCategoriesDescription. Alors, comment pourrais-je obtenir le nom des catégories de la classe du modèle ShopCategory?

Javier

sf 1.4/propulser

Répondre

5

C'est une erreur standard qui n'a rien à voir avec les relations parent/enfant. Normalement, vous avez juste besoin d'ajouter au fichier ShopCategory.php dans le dossier lib/modèle une méthode __toString()

public function __toString() 
{ 
    return $this->getCategoryName(); 
} 

maintenant depuis que vous avez tiré le nom de la catégorie de la table shop_category vous devez créer une fonction cela obtient la description de shop_categories qui est un enfant de la shop_category et est la culture correcte pour que vous ayez un nom de catégorie à retourner.

Questions connexes