源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-09-25 07:34 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Yii不依赖Model的表单生成器用法实例
本文实例讲述了Yii不依赖Model的表单生成器用法。分享给大家供大家参考。具体实现方法如下: 默认的Yii的表单生成器只需要这样就可以了:
[u]复制代码[/u] 代码如下:
$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
[u]复制代码[/u] 代码如下:
<?php /**  * @author Ryan <yuansir@live.cn/yuansir-web.com>  */ class UCForm extends CForm {  public function render()  {   $output = $this->renderBegin();   foreach ($this->getElements() as $element)   {    $output .= $element->render();   }   foreach ($this->getButtons() as $button)   {    $output .= $button->render();   }   $output .= $this->renderEnd();   return $output;  }  public function renderElement($element)  {   if (is_string($element))   {    if (($e = $this[$element]) === null && ($e = $this->getButtons()->itemAt($element)) === null)     return $element;    else     $element = $e;   }   if ($element->getVisible())   {    //UCFormInputElement 代替 CFormInputElement    if ($element instanceof UCFormInputElement)    {     if ($element->type === 'hidden')      return "<div style="visibility:hidden">n" . $element->render() . "</div>n";     else      return "<div class="row field_{$element->name}">n" . $element->render() . "</div>n";    }    else if ($element instanceof CFormButtonElement)     return $element->render() . "n";    else     return $element->render();   }   return '';  } }
再来个简单的调用示例:
[u]复制代码[/u] 代码如下:
<?php /**  * @author Ryan <yuansir@live.cn/yuansir-web.com>  */ class PlayerSearchController extends Controller {  public function actionIndex()  {   $config = array(       'class' => 'ddd',       'action'=>'',       'elements' => array(    '<br><br>',    'username' => array(        'label'=>'用户名啊',//注意这里的label        'type' => 'text',        'maxlength' => 32,        'value' => ''    ),    '<br><br>',    'password' => array(        'label'=>'昵称啊',//注意这里的label        'type' => 'password',        'maxlength' => 32,        'value' => ''    ),       ),       'buttons' => array(    'login' => array(        'type' => 'submit',        'label' => 'Login',    ),       ),   );   $model = new CFormModel();   $form = new UCForm($config, $model);   $this->render('index', compact('form'));  } }
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部