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 $tpl_name 包含表单的模板文件路径
 * @param array $form_tags 生成表单tag的参数
 * @param array $tpl_data 模板数据
 * @return string
 */
function buildForm($tpl_name, array $form_tags = array(), array $tpl_data = array())
{
    $content = $this->delegate->getClosureContainer()->run('buildForm');
    $content .= $this->obRenderTpl($tpl_name, $tpl_data);

    $form_tags += array('action' => '', 'method' => 'post');
    $form_tags['@content'] = $content;

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