nette / forms

📝 Generating, validating and processing secure forms in PHP. Handy API, fully customizable, server & client side validation and mature design.
https://doc.nette.org/forms
Other
488 stars 147 forks source link

Helper for closures and non-static methods #163

Open 2bad2furious opened 7 years ago

2bad2furious commented 7 years ago

Description

I think it would be great to have helpers for closures and non-static methods. It can make JS validation easier and could lead to better code-writing. Correct me if I'm wrong, but for a good JS validation you have to use static methods or named functions that honestly don't belong there.

Naming those methods and closures could look like:

exportRules() EXAMPLE

public static function exportRules(Rules $rules) { $payload = []; foreach ($rules as $rule_key => $rule) { if (!is_string($op = $rule->validator)) { $callback_name = Nette\Utils\Callback::toString($op); if ($callback_name === "{closure}") { $op = $rule->control->getName() . "_rule" . $rule_key; } else if (Nette\Utils\Callback::isStatic($op)) { $op = $callback_name; } else { //TODO replace for better separator instead of :: (requires js changes as well :/ $op = $callback_name; } /*

  • Original code that started on line 100 after 'if(!is_string...'
  • if (!Nette\Utils\Callback::isStatic($op)) { continue; } $op = Nette\Utils\Callback::toString($op);*/ } //method continues as it should
dg commented 7 years ago

Please use only english on GitHub.

2bad2furious commented 7 years ago

Rewriten in English.

dg commented 7 years ago

Thanks

dg commented 7 years ago

Non-static methods' names could look similar to current static methods' names (Class->methodname would result in {"op":"Class[some separator]methodname"})

👍

Closures' names could be generated by the name attribute as seen in my example below

👎 it is too tricky

Users could name methods and closures themselves

That would be fine, but there is no way to do it.

2bad2furious commented 7 years ago

You could achieve that by doing something like $form->....->addRule(callable,"name"); I don't think anything would change for other types of functions.

dg commented 7 years ago

How is this related with onSuccess?

2bad2furious commented 7 years ago

Brainlag, sry.