2013-04-14 4 views
0

Я следующий пример схемы из 2 моделей OrderDetail и Item, многие-к-одному:Symfony 1.4 Формы: Включать данные из соотношения к форме

OrderDetail: 
    columns: 
    invoice_id: { type: integer, notnull: true } 
    item_id: { type: integer, notnull: true } 
    quantity: { type: integer, notnull: true } 
    transaction_price: { type: integer } 
    currency: { type: string(50), default: peso } 
    relations: 
    Invoice: { type: one, local: invoice_id, foreign: invoice_id } 
    Item: { type: one, local: item_id , foreign: item_id } 
    indexes: 
    invoice_to_item: 
     fields: [item_id, invoice_id] 
     type: unique 

Item: 
    actAs: { Timestampable: ~, SoftDelete: ~ } 
    columns: 
    item_id: { type: integer, autoincrement: true, primary: true } 
    item_name: { type: string(100), notnull: true } 
    description: { type: text, notnull: true } 
    part_number: { type: string(50) } 
    size: { type: string(50) } 
    unit: { type: string(10) } 
    in_stock: { type: integer, notnull: true } 
    in_transit: { type: integer, notnull: true } 
    released: { type: integer, notnull: true } 
    borrowed: { type: integer, notnull: true } 
    borrower_name: { type: string } 
    item_type_id: { type: integer, notnull: true } 
    relations: 
    OrderDetails: { type: many, class: OrderDetail, local: item_id, foreign: item_id } 
    Prices: { type: many, class: Price, local: item_id, foreign: item_id } 

В моей форме, я хочу, чтобы включить информацию таблицу позиций, такую ​​как item_name и in_stock. Что я просто хочу сделать, так это то, что я хочу отображать данные из таблицы Item, связанные с моей формой. Я хочу включить эту информацию в свой объект формы для ясности и организации. Я хочу быть в состоянии сделать что-то подобное в моей форме:

echo $form[$number]['Item']['part_number']->getValue() 
// where $number is the index of the OrderDetail in the form and key 'Item' contains data for the Item related to this OrderDetail. 

Я пытался встраивание предмета отношения в OrderDetail, такие как:

class OrderDetailForm extends BaseOrderDetailForm { 

    public function configure() { 
     // some config here... 

     $this->embedRelation('Item'); 
    } 
} 

Проблема с этим, когда я сохранить форму , Предмет объекта также проверяется и сохраняется. Я просто использую эту информацию для отображения. Вот примерный образец того, как я хочу, чтобы форма быть и то, что я хочу сделать:

OrderDetail: 1 
Item: Headset 
In Stock: 5pcs 
Quantity: [input field here that can be changed by the user] 

Если что-то неясно, пожалуйста, дайте мне знать. Кроме того, если вы можете предложить лучший подход, я бы очень признателен.

ответ

1

Если OrderDetailForms встроены в InvoiceForm, и вы хотите получить доступ к объекту Item из них. Тогда я предлагаю вам использовать что-то вроде этого в шаблоне:

// apps\myApp\modules\myModule\templates\editSuccess.php 
$orderDetailForms = $invoiceForm->getEmbeddedForms(); 

foreach ($orderDetailForms as $key => $form) { 
    $item = $form->getObject()->getItem(); 

    echo 'Item name: ' . $item->getItemName() . '<br />'; 
    echo 'In stock: ' . $item->getInStock() . '<br />'; 
    echo $form; 
} 

Дела здесь сделать, это убедиться, что объект вашей детали извлекается вместе с объектами OrderDetail, когда вы делаете запрос. Поскольку эта строка ($ form-> getObject() -> getItem()) будет эффективно выполнять запрос базы данных каждый раз.

+0

'OrderDetailForm' - встроенная форма сама по себе. У меня есть другая форма 'InvoiceForm', которая содержит несколько' OrderDetailForm', связанных с определенным элементом. В InvoiceForm я хочу отобразить связанные с ним 'OrderDetails' и для каждого' OrderDetail', я хочу показать 'item_name' связанного с ним' Item'. У меня нет никаких проблем с внедрением как таковым. Моя проблема в том, что когда я делаю embedRelation(), во время сохранения объект 'Item' также сохраняется. Надеюсь, это прояснится. Я ценю вашу помощь. – nmenego

+0

Я изменил свой ответ. Я не уверен, что это очень помогает ... но я подумал, что я сделаю это. – antony

+0

он работал как шарм! – nmenego

 Смежные вопросы

  • Нет связанных вопросов^_^