• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Yii不依赖Model的表单生成器用法实例_php实例

php 搞代码 4年前 (2022-01-25) 15次浏览 已收录 0个评论

本文实例讲述了Yii不依赖Model的表单生成器用法。分享给大家供大家参考。具体实现方法如下:

默认的Yii的表单生成器只需要这样就可以了:

$form = new CForm('application.views.site.loginForm', $model);

这里的application.views.site.loginForm也可以是配置数组。但是如果$model参数不传的话是会报错的:Fatal error: Call to a member function isAttributeSafe()
比如我要生成一个组表单,但是我不想依赖于model,根据配置就可以生成一组表单该怎么办,

默认生成的表单的label是根据$model->attributes来显示的,所以我做了2件事:

1.继承CFormInputElement覆盖renderLabel方法,将label显示成自己配置的element的label

2.继承CForm覆盖renderElement方法,$element instanceof UCFormInputElement,并覆盖render方法,将Elements和getButtons循环输出
直接上代码:
app/protected/extensions/UCForm.php

<?php<br />/**<br /> * @author Ryan <br /> */<br />class UCForm extends CForm<br />{<br /> public function render()<br /> {<br />  $output = $this->renderBegin();<br />  foreach ($this->getElements() as $element)<br />  {<br />   $output .= $element->render();<br />  }<br />  foreach ($this->getButtons() as $button)<br />  {<br />   $output .= $button->render();<br />  }<br />  $output .= $this->renderEnd();<br />  return $output;<br /> }<br /> public function renderElement($element)<br /> {<br />  if (is_string($element))<br />  {<br />   if (($e = $this[$element]) === null && ($e = $this->getButtons()->itemAt($element)) === null)<br />    return $element;<br />   else<br />    $element = $e;<br />  }<br />  if ($element->getVisible())<br />  {<br />   //UCFormInputElement 代替 CFormInputEleme<em>8本文来源gao.dai.ma.com搞@代*码(网$</em><pre>搞代gaodaima码

nt
if ($element instanceof UCFormInputElement)
{
if ($element->type === ‘hidden’)
return “

n” . $element->render() . “n”;
else
return “

name}”>n” . $element->render() . “

n”;
}
else if ($element instanceof CFormButtonElement)
return $element->render() . “n”;
else
return $element->render();
}
return ”;
}
}

再来个简单的调用示例:

<?php<br />/**<br /> * @author Ryan <br /> */<br />class PlayerSearchController extends Controller<br />{<br /> public function actionIndex()<br /> {<br />  $config = array(<br />      'class' => 'ddd',<br />      'action'=>'',<br />      'elements' => array(<br />   '<br><br>',<br />   'username' => array(<br />       'label'=>'用户名啊',//注意这里的label<br />       'type' => 'text',<br />       'maxlength' => 32,<br />       'value' => ''<br />   ),<br />   '<br><br>',<br />   'password' => array(<br />       'label'=>'昵称啊',//注意这里的label<br />       'type' => 'password',<br />       'maxlength' => 32,<br />       'value' => ''<br />   ),<br />      ),<br />      'buttons' => array(<br />   'login' => array(<br />       'type' => 'submit',<br />       'label' => 'Login',<br />   ),<br />      ),<br />  );<br />  $model = new CFormModel();<br />  $form = new UCForm($config, $model);<br />  $this->render('index', compact('form'));<br /> }<br />}

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Yii不依赖Model的表单生成器用法实例_php实例

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址