menu

buildForm

触发条件

当调用视图控制器中的buildForum()方法时

使用方法

$web = Cross\Core\Delegate::loadApp('web');

$web->on('buildForm', function () {

    return \Cross\Lib\Document\HTML::input(array(
        'type' => 'text',
        'value' => uniqid(),
        'name' => 'test'
    ));

});

$web->run();

由于buildForm()方法会自动生成form标签包裹表单模板中的内容, 表单模板只需要包含输入框就可以了. 函数的返回值将出现在表单模版之前, 源码如下

/**
 * 生成表单
 * <pre>
 * 使用$this->on('buildForm', ....), 来干预所有生成的表单内容
 * </pre>
 *
 * @param string $tplName 包含表单的模板文件路径
 * @param array $formTags 生成表单tag的参数
 * @param array $tplData 模板数据
 * @return string
 */
function buildForm(string $tplName, array $formTags = [], array $tplData = [])
{
    $content = $this->delegate->getClosureContainer()->run('buildForm', [$this]);
    $content .= $this->obRenderTpl($tplName, $tplData);

    $formTags += ['action' => '', 'method' => 'post'];
    $formTags['@content'] = $content;

    return $this->wrapTag('form', $formTags);
}