Sorry, that didn't come through quite right. See http://www.paste2.org/p/81737 instead.
Matthew Lurz wrote: > > I wouldn't include the image in the form at all actually. Instead I would > just wrap a conditional around a div in the view script. Something like: > > <? if (this->image): ?> > > <div> "<?= $this- image->src ?>"></div> > > <? endif ?> > > <?= $this->form ?> > > > Edward Haber wrote: >> >> That does sound like a better solution to me. Also, the link in the >> form could frustrate some users if they've partially completed the >> form then delete the image. Thanks for your comments. >> >> So then the best solution appears to be a decorator. >> >> >> On Oct 3, 2008, at 1:28 PM, Matthew Lurz wrote: >> >>> >>> In that case why not forego the remove action and the additional >>> form logic >>> and just display the form regardless of whether the image exists. >>> When the >>> user uploads a new image it would replace the existing one. Just >>> wondering >>> since it seems like the user would have to jump through an extra >>> hoop to >>> remove the image in order to upload a new one. The less a user does >>> or has >>> to do the better. >>> >>> >>> Edward Haber wrote: >>>> >>>> Here's the solution I came up with. Thanks for all the input and help >>>> on this problem. This solution involves using a conditional statement >>>> in Zend_Form to create one of two element types. When the image is >>>> present the view helper decorator replaces the form element with the >>>> image and a link to a remove action. The view helper is below and >>>> will >>>> still be tweaked a bit but it should give the overall idea. This form >>>> class snippet has all the other elements removed from it for clarity >>>> >>>> >>>> class MyForm extends Zend_Dojo_Form >>>> { >>>> public function __construct($options = null) >>>> { >>>> parent::__construct($options); >>>> >>>> $db = Zend_Registry::get('db'); >>>> >>>> $this->setName('article_form') >>>> ->setAction(URL.'/admin/article/save') >>>> ->setMethod('post') >>>> ->addPrefixPath('MF_Form_Element', 'MF/Form/Element/', >>>> 'element') >>>> ->setAttrib('enctype', 'multipart/form-data') >>>> ->setAttrib('id', 'article-form'); >>>> >>>> >>>> /** >>>> * image_name >>>> */ >>>> if ($options['image_id']) { >>>> >>>> $this->addElement('file', 'image_name', array( >>>> 'label' => 'Image', >>>> 'description' => 'To upload another photo >>>> delete this one >>>> first.', >>>> 'attribs' => array( >>>> 'imgSrc' => URL . >>>> '/media/articles/' . $options['image_id'] . >>>> '.jpg', >>>> 'action' => URL . >>>> '/admin/article/drop-image/' . >>>> $options['image_id'] >>>> ), >>>> 'decorators' => array( >>>> array('ViewHelper', >>>> array('helper' => 'mediaImage')), >>>> 'Errors', >>>> 'Description', >>>> array('HtmlTag', array('tag' => >>>> 'dd')), >>>> array('Label', array('tag' => >>>> 'dt')) >>>> ) >>>> )); >>>> >>>> } else { >>>> >>>> $this->addElement('file', 'image_name', array( >>>> 'label' => 'Upload an image', >>>> 'destination' => AP . >>>> '/application/tmp/upload-staging', >>>> 'required' => true, >>>> 'validators' => array( >>>> array('Size', '500Kb'), >>>> array('ImageSize', array(10, >>>> 10, 1024, 768)), >>>> array('Extension', array('jpg', >>>> 'jpeg')) >>>> ) >>>> )); >>>> >>>> } >>>> >>>> (other form elements removed) >>>> >>>> Then I use this helper: >>>> >>>> class MF_View_Helper_MediaImage >>>> { >>>> public function mediaImage($fieldname, $value = "", $attribs = null) >>>> { >>>> $imgSrc = $attribs['imgSrc']; >>>> $action = $attribs['action']; >>>> $class = isset($attribs['class']) ? $attribs['class'] : 'image- >>>> remove-button'; >>>> >>>> return <<<OUTPUT >>>> $imgSrc | $action Delete >>>> OUTPUT; >>>> } >>>> } >>>> >>>> This will pretty much be a reusable solution for the four CMS media >>>> subdirectories of image content and seems to work just fine. Happy >>>> for >>>> any comments. >>>> >>>> EH >>>> >>>> >>>> On Oct 3, 2008, at 8:12 AM, Matthew Lurz wrote: >>>> >>>>> >>>>> I would keep the image separate from the form unless you have a good >>>>> reason >>>>> not to. Then the logic is simple. Display the image if it exists, if >>>>> not >>>>> then display the form. Of course you would need an action to delete >>>>> the >>>>> image so that the form could be redisplayed. >>>>> >>>>> >>>>> Edward Haber wrote: >>>>>> >>>>>> Definitely view logic. Good call. Still I'm uncertain though >>>>>> because >>>>>> I'm working with an extended Zend_Form class. Perhaps I should >>>>>> make a >>>>>> custom Form Element? Or a custom Form Decorator? Or use the view >> >>>>>> helper decorator for just that element? I'd love to hear the Zend >>>>>> best >>>>>> practice take on this solution. >>>>>> >>>>>> Thanks! >>>>>> >>>>>> >>>>>> >>>>>> On Oct 2, 2008, at 10:50 PM, Matthew Lurz wrote: >>>>>> >>>>>>> >>>>>>> Sounds like view logic to me and so I would add a conditional in >>>>>>> the >>>>>>> view >>>>>>> script. >>>>>>> >>>>>>> >>>>>>> Edward Haber wrote: >>>>>>>> >>>>>>>> I have a form that I want offer an image upload form element on. >>>>>>>> This >>>>>>>> has worked great using Zend_Form_Element_File. The upload works >>>>>>>> fine. >>>>>>>> What is the recommended way to have the uploaded image replace >>>>>>>> the >>>>>>>> upload form if an image exists? I don't need the solution coded, >>>>>>>> just >>>>>>>> the direction I should go. >>>>>>>> >>>>>>>> For example, I have the form as a class. SHould I pass the image >>>>>>>> name >>>>>>>> (if one exists) in the config array to the form? In the form i >>>>>>>> would >>>>>>>> then check for $config['imageName'] and if it exists display the >>>>>>>> image >>>>>>>> in place of the form element. This is another trick - how do >>>>>>>> display >>>>>>>> an image in a form? >>>>>>>> >>>>>>>> Is the answer toggling in the form class between the form element >>>>>>>> and >>>>>>>> an image? Or using CSS to display the image if it's there and >>>>>>>> "hide" >>>>>>>> the form (display:none for example). >>>>>>>> >>>>>>>> I'm just looking for best practice. I'm sure lots of people have >>>>>>>> already confronted this situation. Any input much appreciated! >>>>>>>> Thanks! >>>>>>>> >>>>>>>> Eddie >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> View this message in context: >>>>>>> http://www.nabble.com/Toggle-file-upload-element-with-uploaded-image-tp19780259p19791263.html >>>>>>> Sent from the Zend Framework mailing list archive at Nabble.com. >>>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>>> View this message in context: >>>>> http://www.nabble.com/Toggle-file-upload-element-with-uploaded-image-tp19780259p19796584.html >>>>> Sent from the Zend Framework mailing list archive at Nabble.com. >>>>> >>>> >>>> >>>> >>> >>> -- >>> View this message in context: >>> http://www.nabble.com/Toggle-file-upload-element-with-uploaded-image-tp19780259p19802308.html >>> Sent from the Zend Framework mailing list archive at Nabble.com. >>> >> >> >> > > -- View this message in context: http://www.nabble.com/Toggle-file-upload-element-with-uploaded-image-tp19780259p19803976.html Sent from the Zend Framework mailing list archive at Nabble.com.