Don't know if this will actually help or hinder nate in his efforts, but I made it work like this:
http://bakery.cakephp.org/articles/view/multiple-rules-of-validation-per-field-in-cakephp-1-2#1943 The basic principle is : define a "magic constant" to use in the $validation array to mean "manual", then call Model::invalidate() manually inside the validation method. It does involve overriding AppModel::invalidate(), but it works. On Mar 9, 4:45 pm, nate <[EMAIL PROTECTED]> wrote: > Well, I'm *sort of* in the middle of doing it, but if you could > provide unit tests for it, that would be fantastically useful. Just > open an enhancement ticket and attach the diff. If you can do that, > I'll try and get to it sometime today. > > On Mar 9, 3:49 am, Mike <[EMAIL PROTECTED]> wrote: > > > Having read John David Anderson (_psychic_)'s second post > > tohttp://groups.google.com/group/cake-php/browse_thread/thread/7acc2b07..., > > I was wondering if it would be helpful if I put a proposed code change > > (including some unit tests) to do this. If this has been spec'd out > > at all, I'd be happy to follow that. If not, I'd be happy to code up > > (and document) something that allows the validation method to change > > the 'message' element of the $ruleParams array, and have that change > > stick. > > > I also understand that this can be one of those 'Mythical Man Month' > > sorts of things - if it would be faster for y'all to just do this on > > your own, that's fine by me, too. > > > Thanks! > > --Mike > > > On Mar 8, 11:24 pm, Mike <[EMAIL PROTECTED]> wrote: > > > > Awesome!! Thank you very much! > > > > (I do understand that this decision was made independent of my > > > questions about this feature, but I figure that it's a nice feature > > > that I'm looking forwards to, and so saying 'Thanks' seems to be a > > > good thing to do :) ) > > > > Thanks! > > > --Mike > > > > On Mar 8, 6:42 am, nate <[EMAIL PROTECTED]> wrote: > > > > > This will be implemented before the next release. > > > > > On Mar 7, 8:26 pm, Mike <[EMAIL PROTECTED]> wrote: > > > > > > Thanks for your suggestion - I was thinking about that, and here's > > > > > what I came up with. If you can see any holes/offer any refinements, > > > > > I'd love to hear about them :) > > > > > > Part of the reason I'm against this is that I've already got a > > > > > function that does what I want, and I'm looking to reuse it in > > > > > CakePHP, rather than redo everything the Cake way. > > > > > > Another part is that I think that if I redo this in Cake, it'll end up > > > > > being more awkward, because I want this functionality to be used for > > > > > multiple fields (so I'll need the same collection of rules, for each > > > > > and every field). > > > > > > My goal: > > > > > I want to create a directory on the server, so that users can upload > > > > > files to the server. When the 'superuser' creates the directory, I > > > > > want there to be 2 options: > > > > > 1) Use an existing directory > > > > > 2) Use an existing directory if it's there, and create it if not. > > > > > > So, breaking this down into pieces, it seems like there are a couple > > > > > of steps: > > > > > 1) If the directory exists: > > > > > 1.1) If it's writable, then we're done & we're good > > > > > 1.2) If it's NOT writable, then we're done & we've got an error > > > > > > 2) If it doesn't exist: > > > > > 2.1) If the user has elected to create the directory when it doesn't > > > > > exist, > > > > > then create it > > > > > 2.1.1) We may encounter errors trying to create the directory > > > > > > 2.2) If the user has elected to NOT create the directory when it > > > > > doesn't exist > > > > > then we're done, and we've got an error > > > > > > Basically, the user types the directory into a textbox, then checks a > > > > > checkbox to indicate 'create if not present' > > > > > > So - if I have a rule which says 'check for the existence (and > > > > > writability) of the directory', and it finds that the directory isn't > > > > > there, then we may need to give the user an error, OR we may not > > > > > (depending on the 'create if not already there' checkbox). That would > > > > > be 1 rule, I guess. > > > > > > Next, if the directory doesn't exist, but we want to create it, we'll > > > > > try to do that. Which is a second rule. There are a couple of > > > > > different things that could go wrong, so I guess we'll use a semi- > > > > > generic error message, and hope that's helpful enough :) > > > > > > This all gets further complicated by a desire to reuse this for > > > > > several different fields - now I need to copy this set of validation > > > > > rules into the second (and third, etc, etc) fields, too, which is > > > > > getting kind of awkward. It's not the end of the world, but having > > > > > all the (related) logic in one function is kinda nice, and this way, > > > > > that one function can produce exact error messages. > > > > > > Thanks! > > > > > --Mike > > > > > > On Mar 7, 4:19 pm, "b logica" <[EMAIL PROTECTED]> wrote: > > > > > > > Why not just create a second validation method and narrow the first > > > > > > one to whatever concerns the message you've set for it? > > > > > > > On Fri, Mar 7, 2008 at 6:46 PM, Mike <[EMAIL PROTECTED]> wrote: > > > > > > > > Thanks for the reply! One of the big reasons I went with Cake > > > > > > > is that > > > > > > > it seemed to have an active, friendly community. I'm glad to be > > > > > > > part > > > > > > > of it! :) > > > > > > > > I tried this out, and it doesn't seem to work. Looking at the > > > > > > > code in > > > > > > > cake/libs/model/model.php, specifically the invalidFields > > > > > > > method, just > > > > > > > below where the call_user_func_array function is called, it > > > > > > > appears > > > > > > > that if the user-defined validation method (i.e., my method) > > > > > > > returns > > > > > > > false, then the Cake code will call Model::invalidate using the > > > > > > > default error message for that rule. > > > > > > > > Since this happens after my method has finished executing, this > > > > > > > means > > > > > > > that the error message that my method set is now overwritten > > > > > > > with the > > > > > > > default 'message'. > > > > > > > > As a matter of fact - looking at the code in the invalidFields, > > > > > > > it > > > > > > > looks like it's impossible to have a validation method create a > > > > > > > dynamic error message, given the code that's there, now. > > > > > > > > Does anybody else have an interest in being able to create > > > > > > > dynamic > > > > > > > error messages from within a validation method/function? If so, > > > > > > > how > > > > > > > do we ask for this feature to be incorporated into Cake? > > > > > > > > Thanks! > > > > > > > --Mike > > > > > > > > On Mar 7, 7:31 am, "dr. Hannibal Lecter" <[EMAIL PROTECTED]> > > > > > > > wrote: > > > > > > > > Have you tried Model::invalidate(...)? > > > > > > > > > > > > > > > >http://api.cakephp.org/1.2/class_model.html#81c94997c2d6158c40efd9c70... > > > > > > > > > On Mar 6, 10:29 pm, Mike <[EMAIL PROTECTED]> wrote: > > > > > > > > > > Hello! > > > > > > > > > > In CakePHP 1.2, one can define a validation rule (in a > > > > > > > model) that > > > > > > > > > calls a method to do the validation. If the method returns > > > > > > > false, > > > > > > > > > then whatever message was specified for that rule is > > > > > > > displayed in the > > > > > > > > > view, which is great for most of data validation needs. > > > > > > > > > > However, in the case that the method returns false, I'd to > > > > > > > have that > > > > > > > > > method change the 'message' to be something new (which the > > > > > > > method just > > > > > > > > > generated). It looks like I can do this by hacking the > > > > > > > cake/ file, > > > > > > > > > and by tweaking some code in the invalidFields method (right > > > > > > > around > > > > > > > > > the calls to call_user_func_array). > > > > > > > > > > Is it possible to do this (to have the validation method > > > > > > > set/change > > > > > > > > > the message dynamically) without hacking Cake itself? I'm > > > > > > > really > > > > > > > > > sorry if I've missed this, but I've looked around, but > > > > > > > haven't found > > > > > > > > > anything that seems directly applicable. > > > > > > > > > > Thanks! > > > > > > > > > ---Mike- Hide quoted text - > > > > > > > > > - Show quoted text -- Hide quoted text - > > > > > > > - Show quoted text -- Hide quoted text - > > > > > - Show quoted text -- Hide quoted text - > > > > - Show quoted text - --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Cake PHP" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---
