Thursday, April 28, 2011

Re: Validate from within a model

Why don't you just validate that the destination folder exists and is
writable?

On Apr 28, 2:57 am, func0der <funco...@live.com> wrote:
> Okay.
>
> I'm doing it like this.
>
> I'm havin a new file uploaded.
> The file data, like mime type, name etc. will be saved in the db under
> the file id.
> I'm using that id as a filename for the files in my filesystem.
> So i need to first create a db record to use the id.
>
> Afterwards i'm trying to save the file.
> If for example the folder for the upload is not writable or i don't
> have the permission or any other case i can't figure out now happens,
> then i want to cancel the upload and delete the db record so i won't
> have 2 or more of the same file in the database.
>
> This user is getting an error message that something fails during the
> file upload and also i want to let the users know what they are
> supposed to do next.
>
> This is my intention.
>
> And i would never validate file uploads with javascripts because of 2
> reasons:
> First, i don't know how
> Second, i know enough to know that this kind of validation wouldn't be
> save enough ^^
>
> Nothing against you, but js alone isn't the key.
>
> On 27 Apr., 23:54, Miles J <mileswjohn...@gmail.com> wrote:
>
>
>
>
>
>
>
> > You dont need to use validates(), just set an error manually.
>
> > $this->invalidate('fields', 'Error message.');
>
> > Also, your approach is still wrong IMO. You should be doing all error
> > checking before any save functionality is triggered. In what scenario
> > will the image NOT copy/transfer? I have yet to ever run into that
> > problem.
>
> > On Apr 27, 12:31 pm, func0der <funco...@live.com> wrote:
>
> > > okay...i think i got it.
>
> > > It is part of the MVC pattern, isn't it?
>
> > > The model is NOT connected to the view or the helpers. These two are
> > > getting their data or the invalid error messages by the controller.
>
> > > Am i right here?
>
> > > On 27 Apr., 21:00, func0der <funco...@live.com> wrote:
>
> > > > I can re-save and delete, so why i shouldn't be able to revalidate?
>
> > > > The error message is also in the "validationErrors" variable but while
> > > > the output of the form there is no error message.
> > > > But why?
>
> > > > On 27 Apr., 20:38, Miles J <mileswjohn...@gmail.com> wrote:
>
> > > > > You can't validates() something after the model save has already
> > > > > happened. Use a behavior for validation or use my plugin.
>
> > > > >https://github.com/milesj/cake-uploader
>
> > > > > And an example model on how to use it.
>
> > > > >https://github.com/milesj/cake-uploader/blob/master/tests/models/uplo...
>
> > > > > On Apr 27, 11:18 am, func0der <funco...@live.com> wrote:
>
> > > > > > Hey guys,
>
> > > > > > i'm having a file upload here.
> > > > > > I'm using "afterSave" to place the uploaded file in the filesystem.
>
> > > > > >         function afterSave($created){
> > > > > >                 //get the entry id
> > > > > >                 $this->data['DataFile']['id'] = $this->getInsertId();
> > > > > >                 if(!$this->saveDataFile($this->data)){
> > > > > >                         $this->delete($this->data['DataFile']['id']);
> > > > > >                         $this->data['DataFile']['data_file'] = array();
> > > > > >                         $this->validates();
> > > > > >                 }
> > > > > >         }
>
> > > > > > "saveDataFile" is a function which tries to places the uploaded file
> > > > > > in the file system and returns false in case of copy fails.
>
> > > > > > If the copy should fail i delete the record from the database and set
> > > > > > the "data_file" index which normally cotains the uploaded file
> > > > > > information to an empty array. This is because i want the validation
> > > > > > to fail so the file upload field gets an error message while
> > > > > > rendering.
>
> > > > > > The problem now is that the upload form does NOT! contain the
> > > > > > validation error message for that particular field.
>
> > > > > > Do you know what i am doing wrong?
>
> > > > > > Greetings
> > > > > > func0der

--
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+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php

No comments: