What about setting an empty hidden field in the view, like
echo $this->Form->hidden('Model.file', array('value' => ''));
I'd probably be more prone to just copy and paste the Coupler to my own
behaviors and modify it, or create a new small behavior that is just
dedicated to this task.
On Wednesday, February 29, 2012 7:49:01 AM UTC-8, [email protected]
wrote:
>
> I tried it earlier by adding the following to the end of the beforeSave()
> in our Users model:
>
> if (!isset($this->data['User']['file'])) { $this->data['User']['file'] =
> null; }
>
> But when I tested it I discovered that the beforeSave() in the Media
> Coupler was firing before the beforeSave() in our Users model, so it was
> too late to add the empty 'file' key to the array as the 'User' had already
> been unset by the Coupler. I've therefore had to roll the change back and
> go back to the drawing board for now.
>
> Keith Gorman
> *Class Outfit*
> **
> [email protected]
> www.classoutfit.com
>
> On 29 Feb 2012, at 15:21, jeremyharris wrote:
>
> I probably didn't take your reply the right way. Hopefully I wasn't too
> harsh myself.
>
> Anyway, hopefully you'll get a response from David soon. Did you ever get
> to try out passing an empty 'file' key in the form (i.e., a hidden field)?
> That way, the key would exist and the Coupler wouldn't unset the data. I
> don't think this is a very elegant solution either, but I was curious if
> you tried it out.
>
> On Tuesday, February 28, 2012 8:41:39 PM UTC-8, Jeremy Burns wrote:
>>
>> Gosh my reply sounded harsh on you Jeremy - that wasn't my intention.
>> We've commented out the line that unsets the data and it *all seems fine*,
>> which also feels dirty. The user records are saving correctly, we can
>> subsequently add images to user records and all other dedicated image
>> tables that use the coupler are functioning too. I did reach out to David
>> yesterday, hoping to learn more from him so that we can implement this
>> properly and will report back.
>>
>> Jeremy Burns
>> Class Outfit
>>
>> http://www.classoutfit.com
>>
>> On 28 Feb 2012, at 21:15:25, jeremyharris wrote:
>>
>> I didn't say I agreed with how it worked, I was just explaining what I
>> think the author's intended use case was. The question was if you were
>> missing a setting or doing anything wrong. You weren't, so I just threw out
>> some ideas based on how the Coupler works. Feel free to take it up with the
>> author or create a Coupler that works for you.
>>
>> I'm glad that an empty image doesn't create garbage data, that thought
>> was based off of what the Coupler does down the road (check the file and
>> populate dirname and basename).
>>
>> On Tuesday, February 28, 2012 12:06:23 PM UTC-8, Jeremy Burns wrote:
>>>
>>> I understand what you are saying but I don't think it's the full answer.
>>> It's a perfectly valid use case to have a table that has an optional image
>>> in it without the need to have a separate join table. The absence of the
>>> image doesn't create any garbage data; the user row is still valid. A bio
>>> snap for a user is good example. For the plugin to simply clear the whole
>>> data array because the optional image fields aren't populated is nuts. If
>>> the fields are empty simply return true and let the main model get on with
>>> its work.
>>>
>>> Jeremy Burns
>>> Class Outfit
>>>
>>> http://www.classoutfit.com
>>>
>>> On 28 Feb 2012, at 15:45:29, jeremyharris wrote:
>>>
>>> It should only unset the data if you are creating the User and it's
>>> missing the 'file' key. If you are updating, you shouldn't *need* the
>>> 'file' key.
>>>
>>> That said, you can probably get away with passing an empty (or a path to
>>> a default image) file key when you are creating the User using a hidden
>>> field. This should allow the coupler to continue with the save. This may
>>> save some empty garbage data that is probably unwanted.
>>>
>>> The other solution would be to detach the Coupler behavior at runtime
>>> when you don't want it to "force" you to have an image.
>>>
>>> The whole point of the Coupler is to tightly couple the physical image
>>> to the record, so if the image doesn't exist neither should the record. I
>>> tend to create a separate table for attachments for this very reason. A
>>> user should be allowed to exist without an image.
>>>
>>> On Tuesday, February 28, 2012 5:42:11 AM UTC-8, Jeremy Burns wrote:
>>>>
>>>> I'm using David Persson's media plugin. I have a users table that
>>>> contains the fields necessary to link to an image file, but a user
>>>> does not have to have an image. When I include the Media.Coupler
>>>> behaviour in the User model User->create always fails on User->save
>>>> when the user does not have an image because of the beforeSave in
>>>> coupler.php:
>>>>
>>>> function beforeSave(&$Model) {
>>>> if (!$Model->exists()) {
>>>> if
>>>> (!isset($Model->data[$Model->alias]['file'])) {
>>>> unset($Model->data[$Model->alias]);
>>>> <<<--- clears down my User
>>>> data
>>>> return true;
>>>> }
>>>> } else {
>>>>
>>>> This is unsetting the User data because the file key is missing. If I
>>>> comment out the unset my User->save is successful. The Media.Coupler
>>>> is working perfectly well for another table that hasMany images in an
>>>> associated table.
>>>>
>>>> Is there a setting I need to configure or am I doing something else
>>>> wrong?
>>>
>>>
>>> --
>>> 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
>>> [email protected] For more options, visit this
>>> group at http://groups.google.com/group/cake-php
>>>
>>>
>>>
>> On Tuesday, February 28, 2012 12:06:23 PM UTC-8, Jeremy Burns wrote:
>>>
>>> I understand what you are saying but I don't think it's the full answer.
>>> It's a perfectly valid use case to have a table that has an optional image
>>> in it without the need to have a separate join table. The absence of the
>>> image doesn't create any garbage data; the user row is still valid. A bio
>>> snap for a user is good example. For the plugin to simply clear the whole
>>> data array because the optional image fields aren't populated is nuts. If
>>> the fields are empty simply return true and let the main model get on with
>>> its work.
>>>
>>> Jeremy Burns
>>> Class Outfit
>>>
>>> http://www.classoutfit.com
>>>
>>> On 28 Feb 2012, at 15:45:29, jeremyharris wrote:
>>>
>>> It should only unset the data if you are creating the User and it's
>>> missing the 'file' key. If you are updating, you shouldn't *need* the
>>> 'file' key.
>>>
>>> That said, you can probably get away with passing an empty (or a path to
>>> a default image) file key when you are creating the User using a hidden
>>> field. This should allow the coupler to continue with the save. This may
>>> save some empty garbage data that is probably unwanted.
>>>
>>> The other solution would be to detach the Coupler behavior at runtime
>>> when you don't want it to "force" you to have an image.
>>>
>>> The whole point of the Coupler is to tightly couple the physical image
>>> to the record, so if the image doesn't exist neither should the record. I
>>> tend to create a separate table for attachments for this very reason. A
>>> user should be allowed to exist without an image.
>>>
>>> On Tuesday, February 28, 2012 5:42:11 AM UTC-8, Jeremy Burns wrote:
>>>>
>>>> I'm using David Persson's media plugin. I have a users table that
>>>> contains the fields necessary to link to an image file, but a user
>>>> does not have to have an image. When I include the Media.Coupler
>>>> behaviour in the User model User->create always fails on User->save
>>>> when the user does not have an image because of the beforeSave in
>>>> coupler.php:
>>>>
>>>> function beforeSave(&$Model) {
>>>> if (!$Model->exists()) {
>>>> if
>>>> (!isset($Model->data[$Model->alias]['file'])) {
>>>> unset($Model->data[$Model->alias]);
>>>> <<<--- clears down my User
>>>> data
>>>> return true;
>>>> }
>>>> } else {
>>>>
>>>> This is unsetting the User data because the file key is missing. If I
>>>> comment out the unset my User->save is successful. The Media.Coupler
>>>> is working perfectly well for another table that hasMany images in an
>>>> associated table.
>>>>
>>>> Is there a setting I need to configure or am I doing something else
>>>> wrong?
>>>
>>>
>>> --
>>> 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
>>> [email protected] For more options, visit this
>>> group at http://groups.google.com/group/cake-php
>>>
>>>
>>>
>> --
>> 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
>> [email protected] For more options, visit this group
>> at http://groups.google.com/group/cake-php
>>
>>
>>
> On Tuesday, February 28, 2012 8:41:39 PM UTC-8, Jeremy Burns wrote:
>>
>> Gosh my reply sounded harsh on you Jeremy - that wasn't my intention.
>> We've commented out the line that unsets the data and it *all seems fine*,
>> which also feels dirty. The user records are saving correctly, we can
>> subsequently add images to user records and all other dedicated image
>> tables that use the coupler are functioning too. I did reach out to David
>> yesterday, hoping to learn more from him so that we can implement this
>> properly and will report back.
>>
>> Jeremy Burns
>> Class Outfit
>>
>> http://www.classoutfit.com
>>
>> On 28 Feb 2012, at 21:15:25, jeremyharris wrote:
>>
>> I didn't say I agreed with how it worked, I was just explaining what I
>> think the author's intended use case was. The question was if you were
>> missing a setting or doing anything wrong. You weren't, so I just threw out
>> some ideas based on how the Coupler works. Feel free to take it up with the
>> author or create a Coupler that works for you.
>>
>> I'm glad that an empty image doesn't create garbage data, that thought
>> was based off of what the Coupler does down the road (check the file and
>> populate dirname and basename).
>>
>> On Tuesday, February 28, 2012 12:06:23 PM UTC-8, Jeremy Burns wrote:
>>>
>>> I understand what you are saying but I don't think it's the full answer.
>>> It's a perfectly valid use case to have a table that has an optional image
>>> in it without the need to have a separate join table. The absence of the
>>> image doesn't create any garbage data; the user row is still valid. A bio
>>> snap for a user is good example. For the plugin to simply clear the whole
>>> data array because the optional image fields aren't populated is nuts. If
>>> the fields are empty simply return true and let the main model get on with
>>> its work.
>>>
>>> Jeremy Burns
>>> Class Outfit
>>>
>>> http://www.classoutfit.com
>>>
>>> On 28 Feb 2012, at 15:45:29, jeremyharris wrote:
>>>
>>> It should only unset the data if you are creating the User and it's
>>> missing the 'file' key. If you are updating, you shouldn't *need* the
>>> 'file' key.
>>>
>>> That said, you can probably get away with passing an empty (or a path to
>>> a default image) file key when you are creating the User using a hidden
>>> field. This should allow the coupler to continue with the save. This may
>>> save some empty garbage data that is probably unwanted.
>>>
>>> The other solution would be to detach the Coupler behavior at runtime
>>> when you don't want it to "force" you to have an image.
>>>
>>> The whole point of the Coupler is to tightly couple the physical image
>>> to the record, so if the image doesn't exist neither should the record. I
>>> tend to create a separate table for attachments for this very reason. A
>>> user should be allowed to exist without an image.
>>>
>>> On Tuesday, February 28, 2012 5:42:11 AM UTC-8, Jeremy Burns wrote:
>>>>
>>>> I'm using David Persson's media plugin. I have a users table that
>>>> contains the fields necessary to link to an image file, but a user
>>>> does not have to have an image. When I include the Media.Coupler
>>>> behaviour in the User model User->create always fails on User->save
>>>> when the user does not have an image because of the beforeSave in
>>>> coupler.php:
>>>>
>>>> function beforeSave(&$Model) {
>>>> if (!$Model->exists()) {
>>>> if
>>>> (!isset($Model->data[$Model->alias]['file'])) {
>>>> unset($Model->data[$Model->alias]);
>>>> <<<--- clears down my User
>>>> data
>>>> return true;
>>>> }
>>>> } else {
>>>>
>>>> This is unsetting the User data because the file key is missing. If I
>>>> comment out the unset my User->save is successful. The Media.Coupler
>>>> is working perfectly well for another table that hasMany images in an
>>>> associated table.
>>>>
>>>> Is there a setting I need to configure or am I doing something else
>>>> wrong?
>>>
>>>
>>> --
>>> 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
>>> [email protected] For more options, visit this
>>> group at http://groups.google.com/group/cake-php
>>>
>>>
>>>
>> On Tuesday, February 28, 2012 12:06:23 PM UTC-8, Jeremy Burns wrote:
>>>
>>> I understand what you are saying but I don't think it's the full answer.
>>> It's a perfectly valid use case to have a table that has an optional image
>>> in it without the need to have a separate join table. The absence of the
>>> image doesn't create any garbage data; the user row is still valid. A bio
>>> snap for a user is good example. For the plugin to simply clear the whole
>>> data array because the optional image fields aren't populated is nuts. If
>>> the fields are empty simply return true and let the main model get on with
>>> its work.
>>>
>>> Jeremy Burns
>>> Class Outfit
>>>
>>> http://www.classoutfit.com
>>>
>>> On 28 Feb 2012, at 15:45:29, jeremyharris wrote:
>>>
>>> It should only unset the data if you are creating the User and it's
>>> missing the 'file' key. If you are updating, you shouldn't *need* the
>>> 'file' key.
>>>
>>> That said, you can probably get away with passing an empty (or a path to
>>> a default image) file key when you are creating the User using a hidden
>>> field. This should allow the coupler to continue with the save. This may
>>> save some empty garbage data that is probably unwanted.
>>>
>>> The other solution would be to detach the Coupler behavior at runtime
>>> when you don't want it to "force" you to have an image.
>>>
>>> The whole point of the Coupler is to tightly couple the physical image
>>> to the record, so if the image doesn't exist neither should the record. I
>>> tend to create a separate table for attachments for this very reason. A
>>> user should be allowed to exist without an image.
>>>
>>> On Tuesday, February 28, 2012 5:42:11 AM UTC-8, Jeremy Burns wrote:
>>>>
>>>> I'm using David Persson's media plugin. I have a users table that
>>>> contains the fields necessary to link to an image file, but a user
>>>> does not have to have an image. When I include the Media.Coupler
>>>> behaviour in the User model User->create always fails on User->save
>>>> when the user does not have an image because of the beforeSave in
>>>> coupler.php:
>>>>
>>>> function beforeSave(&$Model) {
>>>> if (!$Model->exists()) {
>>>> if
>>>> (!isset($Model->data[$Model->alias]['file'])) {
>>>> unset($Model->data[$Model->alias]);
>>>> <<<--- clears down my User
>>>> data
>>>> return true;
>>>> }
>>>> } else {
>>>>
>>>> This is unsetting the User data because the file key is missing. If I
>>>> comment out the unset my User->save is successful. The Media.Coupler
>>>> is working perfectly well for another table that hasMany images in an
>>>> associated table.
>>>>
>>>> Is there a setting I need to configure or am I doing something else
>>>> wrong?
>>>
>>>
>>> --
>>> 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
>>> [email protected] For more options, visit this
>>> group at http://groups.google.com/group/cake-php
>>>
>>>
>>>
>> --
>> 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
>> [email protected] For more options, visit this group
>> at http://groups.google.com/group/cake-php
>>
>>
>>
> --
> 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
> [email protected] For more options, visit this group
> at http://groups.google.com/group/cake-php
>
>
--
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
[email protected] For more options, visit this group at
http://groups.google.com/group/cake-php