《PHP教程:Yii不依賴Model的表單生成器用法實(shí)例》要點(diǎn):
本文介紹了PHP教程:Yii不依賴Model的表單生成器用法實(shí)例,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
本文實(shí)例講述了Yii不依賴Model的表單生成器用法.分享給大家供大家參考.具體實(shí)現(xiàn)辦法如下:PHP實(shí)例
默認(rèn)的Yii的表單生成器只需要這樣就可以了:
PHP實(shí)例
代碼如下:
$form = new CForm('application.views.site.loginForm', $model);
這里的application.views.site.loginForm也可以是配置數(shù)組.但是如果$model參數(shù)不傳的話是會(huì)報(bào)錯(cuò)的:Fatal error: Call to a member function isAttributeSafe()
比如我要生成一個(gè)組表單,但是我不想依賴于model,根據(jù)配置就可以生成一組表單該怎么辦,
默認(rèn)生成的表單的label是根據(jù)$model->attributes來(lái)顯示的,所以我做了2件事:PHP實(shí)例
1.繼承CFormInputElement覆蓋renderLabel辦法,將label顯示成自己配置的element的labelPHP實(shí)例
2.繼承CForm覆蓋renderElement辦法,$element instanceof UCFormInputElement,并覆蓋render辦法,將Elements和getButtons循環(huán)輸出
直接上代碼:
app/protected/extensions/UCForm.php
PHP實(shí)例
代碼如下:
<?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 '';
?}
}
再來(lái)個(gè)簡(jiǎn)單的調(diào)用示例:
代碼如下:
<?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'));
?}
}
希望本文所述對(duì)大家基于Yii框架的PHP程序設(shè)計(jì)有所贊助.PHP實(shí)例
維易PHP培訓(xùn)學(xué)院每天發(fā)布《PHP教程:Yii不依賴Model的表單生成器用法實(shí)例》等實(shí)戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/13459.html