"seminar-form" => function ($page, $pages, $kirby) {
$data = $kirby->controller("site", compact("page", "pages", "kirby"));
$trainers = $data["trainers"]->children()->pluck("id");
$blueprint = blueprint("pages/seminar");
$categories = $blueprint->field("categories")["options"];
$currencies = $blueprint->field("currencies")["options"];
$categoriesKeys = array_keys($categories);
$rules = rules([
"from" => ["required", "date", "minDate", "maxDate"],
"to" => ["required", "date", "minDate", "maxDate"],
"start" => ["required", "time"],
"end" => ["required", "time"],
"reg_deadline" => ["required", "date", "dateBefore"],
"units" => ["required", "integer"],
"max_participant" => ["required", "integer"],
"lang" => ["required", "*.in" => [["de", "en", "nl"]]],
"title" => ["required"],
"subtitle" => ["required"],
"teaser" => ["required"],
"text" => ["required"],
"title_en" => ["required"],
"subtitle_en" => ["required"],
"teaser_en" => ["required"],
"text_en" => ["required"],
"categories" => ["required", "*.in" => [$categoriesKeys]],
"management" => ["required", "in" => [$trainers]],
"trainers" => ["*.in" => [$trainers]],
"forward" => ["required", "in" => [["url", "mail"]]],
"reg_email" => ["email"],
"reg_tel" => [],
"reg_extern" => ["url"],
"reg_extern_tel" => [],
"reg_extern_email" => [],
"format" => ["required", "in" => [["online", "live"]]],
"location" => [],
"loc_name" => [],
"loc_street" => [],
"loc_plz" => [],
"loc_city" => [],
"loc_country" => [],
"loc_tel" => [],
"loc_email" => [],
"loc_web" => [],
"cost_per_day" => [],
"price" => ["required"],
"price_member" => ["required"],
"currencies" => ["required", "in" => [$currencies]],
"price_text" => [],
"early_bird" => [],
"price_early_bird_member" => [],
"price_early_bird" => [],
"early_bird" => [],
"early_bird_deadline" => ["dateBefore"],
]);
$lang = get("lang");
$language = is_array($lang) && in_array("en", $lang) ? true : false;
if ($language === false) {
$notRequired = ["title_en", "subtitle_en", "teaser_en", "text_en"];
foreach ($rules as $name => $r) {
if (in_array($name, $notRequired)) {
array_shift($r["rules"]);
}
}
}
$form = new Form($rules);
if ($kirby->request()->is("POST")) {
$form->action(SubmitAction::class, [
"page" => $page,
]);
}
return array_merge($data, [
"form" => $form,
"categories" => $categories,
"currencies" => $currencies,
"language" => $language,
"lang" => $lang,
]);
},
],
I have this in my plugin index.php and I try to conditionaly require some fields that are needed if e.g. the language checkbox include english for input:
or…