I have been using the Media Plugin by David Persson and I think it's
great and has saved me a lot of time.  I started out with an Invoice
model that hasMany Attachments and everything worked well.  I then
added Materials to my invoice and tried added Attachments to a
specific material associated with the Invoice.  The extra attachment
is read at the server and saved, but it is saved with the invoice_id,
not the specific material item on that invoice.  Here is my data array
as it arrives at the server, via my iPhone app.

[Invoice] => Array
        (
            [project_id] => 2
            [invoice_date] => 2011/10/01
            [is_approved] => 1
        )
    [InvoicedMaterial] => Array
        (
            [0] => Array
                (
                    [description] => Diesel Fuel
                    [amount] => 20
                    [unit_of_measure] => Gallons
                )
        )
    [Attachment] => Array
        (
            [0] => Array
                (
                    [model] => InvoicedMaterial
                    [alternative] => Diesel Fuel
                    [file] => Array
                        (
                            [name] => Diesel Fuel
                            [type] => image/jpeg
                            [tmp_name] => /tmp/phpP7Qy7k
                            [error] => 0
                            [size] => 901352
                        )

                )
            [1] => Array
                (
                    [model] => Invoice
                    [alternative] => Signature
                    [file] => Array
                        (
                            [name] => 023C1C3D-B63F-442E-87DE-
FC3D270D8740
                            [type] => image/png
                            [tmp_name] => /tmp/phpkhczsG
                            [error] => 0
                            [size] => 5953
                        )

                )
        )
    [InvoicedLabor] => Array
        (
            [0] => Array
                (
                    [description] => Construction Foreman
                    [amount] => 10
                    [unit_of_measure] => hrs
                )

        )
)

My models are setup as follows:

Invoice:
        var $hasMany = array(
                'InvoicedEquipment' => array(
                        'className' => 'InvoicedEquipment',
                        'foreignKey' => 'invoice_id',
                        'dependent' => false,
                        'conditions' => '',
                        'fields' => '',
                        'order' => '',
                        'limit' => '',
                        'offset' => '',
                        'exclusive' => '',
                        'finderQuery' => '',
                        'counterQuery' => ''
                ),
                'InvoicedLabor' => array(
                        'className' => 'InvoicedLabor',
                        'foreignKey' => 'invoice_id',
                        'dependent' => false,
                        'conditions' => '',
                        'fields' => '',
                        'order' => '',
                        'limit' => '',
                        'offset' => '',
                        'exclusive' => '',
                        'finderQuery' => '',
                        'counterQuery' => ''
                ),
                'InvoicedMaterial' => array(
                        'className' => 'InvoicedMaterial',
                        'foreignKey' => 'invoice_id',
                        'dependent' => false,
                        'conditions' => '',
                        'fields' => '',
                        'order' => '',
                        'limit' => '',
                        'offset' => '',
                        'exclusive' => '',
                        'finderQuery' => '',
                        'counterQuery' => ''
                ),
                'Attachment' => array(
        'className' => 'Media.Attachment',
        'foreignKey' => 'foreign_key',
        'conditions' => array('Attachment.model' => 'Invoice'),
        'dependent' => true,
                )
        );

InvoicedMaterial:

var $hasMany = array(
      'Attachment' => array(
          'className' => 'Media.Attachment',
          'foreignKey' => 'foreign_key',
          'conditions' => array('Attachment.model' =>
'InvoicedMaterial'),
          'dependent' => true,
  ));


I'm passing all of the attachments as one array, based on the plugin
"recipes" documentation, but that doesn't seem right.  Can the media
plugin handle a nested form being posted and figure out which
attachment should be associated with which model?

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to