nette / forms

📝 Generating, validating and processing secure forms in PHP. Handy API, fully customizable, server & client side validation and mature design.

Home Page:https://doc.nette.org/forms

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Helper for closures and non-static methods

2bad2furious opened this issue · comments

  • bug report? no
  • feature request? yes
  • version: 2.4.5

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:

  • Non-static methods' names could replace named functions
    (Class->methodname would result in {"op":"methodname",...})
  • 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
  • Users could name methods and closures themselves

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

Please use only english on GitHub.

Rewriten in English.

Thanks

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.

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

How is this related with onSuccess?

Brainlag, sry.