/** * Execute the console command. * * @return mixed */ public function handle() { if (is_dir(app_path('Http/Forms'))) { foreach (\File::allFiles(app_path('Http/Forms')) as $f) { $class = \App::getNamespace() . 'Http\\Forms\\' . str_replace('.php', '', $f->getFilename()); Register::container($class); } } //добавим геттеры в контейнеры //добавим сеттеры в контейнеры foreach (Register::$containers as $container) { $this->info($container); foreach ($this->form_element_methods_get as $method) { $params = $this->getMethodParams($container, $method); $this->putPhpDoc($container, 'string', $method, $params); } foreach ($this->form_element_methods_set as $method) { $params = $this->getMethodParams($container, $method); $this->putPhpDoc($container, $container, $method, $params); } } //добавим элементы в контейнеры $i = 0; foreach (Register::$elements as $name => $data) { $this->info(++$i . ') ' . $name); $class = Arr::get($data, 'class'); foreach (Register::$containers as $container) { $params = $this->getMethodParams($class, 'laraform'); $method = \Illuminate\Support\Str::camel('put_' . $name); $this->putPhpDoc($container, $class, $method, $params); } foreach ($this->form_element_methods_get as $method) { $params = $this->getMethodParams($class, $method); $this->putPhpDoc($class, 'string', $method, $params); } foreach ($this->form_element_methods_set as $method) { $params = $this->getMethodParams($class, $method); $this->putPhpDoc($class, $class, $method, $params); } } $data = $this->ret; $content = \View::make('quickform::ide-helper', ['data' => $data, 'tab' => "\t"]); file_put_contents(base_path() . '/_ide_helper_laraform.php', $content); $this->info('IDE helper сгенерирован для ' . count($this->classes) . ' элементов'); }
/** * Appends an element to the container, creating it first * * The element will be created via {@link HTML_QuickForm2_Factory::createElement()} * and then added via the {@link appendChild()} method. * The element type is deduced from the method name. * This is a convenience method to reduce typing. * * @param string $m Method name * @param array $a Method arguments * * @return LaraFormNode Added element * @throws \HTML_QuickForm2_InvalidArgumentException * @throws \HTML_QuickForm2_NotFoundException */ public function __call($m, $a) { if (preg_match('/^(add)([a-zA-Z0-9_]+)$/', $m, $match)) { if ($match[1] == 'add') { $type = strtolower($match[2]); $name = isset($a[0]) ? $a[0] : null; $attr = isset($a[1]) ? $a[1] : null; $data = isset($a[2]) ? $a[2] : []; return $this->addElement($type, $name, $attr, $data); } } if (preg_match('/^(put)([a-zA-Z0-9_]+)$/', $m, $match)) { if ($match[1] == 'put') { $type = \Illuminate\Support\Str::snake($match[2]); $callback = \Larakit\QuickForm\Register::callback($type); if (!is_callable($callback)) { throw new \Exception('Элемент с типом ' . $type . ' не зарегистрирован'); } $el = $this->addElement(call_user_func_array($callback, $a)); return $el; } } throw new \Exception("Fatal error: Call to undefined method " . get_class($this) . "::" . $m . "()", E_USER_ERROR); }
\HTML_QuickForm2_Renderer::register('larakit_form', Larakit\QuickForm\LaraFormRenderer::class, realpath(__DIR__ . '/QuickForm/LaraFormRenderer.php')); //регистрируем команду Larakit\Boot::register_command(\Larakit\QuickForm\CommandQuickformIde::class); Larakit\Boot::register_command(\Larakit\QuickForm\CommandQuickformMakeForm::class); Larakit\Boot::register_provider(\Larakit\QuickForm\LarakitServiceProvider::class); \Larakit\QuickForm\Register::container(Larakit\QuickForm\LaraForm::class); \Larakit\StaticFiles\Manager::package('pear/html_quickform2')->cssPackage('quickform.css')->jsPackage('js/quickform.js')->scopeInit('hierselect', ['/packages/pear/html_quickform2/js/quickform-hierselect.js'])->scopeInit('repeat', ['/packages/pear/html_quickform2/js/quickform-repeat.js'])->setSourceDir('data'); \Larakit\QuickForm\Register::register('button_link_twbs', 'qf_button_link_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('button_twbs', 'qf_button_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('checkbox_twbs', 'qf_checkbox_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('group_checkbox_twbs', 'qf_checkbox_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('group_checkbox_button_twbs', 'qf_checkbox_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('daterangepicker_twbs', 'qf_daterangepicker_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('datetime_twbs', 'qf_datetime_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('date_twbs', 'qf_date_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('time_twbs', 'qf_time_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('email_twbs', 'qf_email_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('group_twbs', 'qf_group_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('number_twbs', 'qf_number_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('password_twbs', 'qf_password_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('radio_twbs', 'qf_radio_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('group_radio_twbs', 'qf_group_radio_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('group_radio_button_twbs', 'qf_group_radio_button_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('select2_twbs', 'qf_select2_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('select_twbs', 'qf_select_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('static_twbs', 'qf_static_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('submit_twbs', 'qf_submit_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('switch_twbs', 'qf_switch_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('text_twbs', 'qf_text_twbs', __DIR__ . '/views'); \Larakit\QuickForm\Register::register('textarea_twbs', 'qf_textarea_twbs', __DIR__ . '/views');
function getTpl() { $type = $this->getType(); $namespace = Register::getNamespace($type); $tpl = $this->laraGet(__FUNCTION__); if (!$tpl) { return $namespace . '::!.quickform.' . $type; } return $tpl; }