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);
}