Yii与表单

作者:zccst

[b]一、我之前理解的yii表单提交[/b]

1,前端views

<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'order-form',
'enableAjaxValidation'=>false,
)); ?>

<div class="row">
<?php echo $form->labelEx($model,'startTime'); ?>
<?php
// 开始时间
// 注:(1)name必须唯一
// (2)name必须是$model->startTime。否则无法写入数据库
// (3)输入框内的图片由css设定
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
'attribute' => 'startTime',
'language'=>'zh_cn',
'model'=>$model,
'name'=>$model->startTime,
'options' => array(
'showAnim' => 'fold',
'dateFormat' => 'yy-mm-dd',
),
'htmlOptions'=>array(
'style'=>'height:16px;',
),
));
?>
<?php echo $form->error($model,'startTime'); ?>
</div>

<div class="row">
<?php echo $form->labelEx($model,'endTime'); ?>
<?php
// 结束时间 注:name必须唯一
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
'attribute' => 'endTime',
'model'=>$model,
'language'=>'zh_cn',
'name'=>$model->endTime,
// additional javascript options for the date picker plugin
'options'=>array(
'showAnim'=>'fold',
'dateFormat'=>'yy-mm-dd',
),
'htmlOptions'=>array(
'style'=>'height:16px;'
),
));

?>
<?php echo $form->error($model,'endTime'); ?>
</div>


<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? '创建' : '保存'); ?>
</div>


<?php $this->endWidget(); ?>



2,后端yii

public function actionCreate()
{
$model = new Order;

if(isset($_GET['userId'])){
$model->userId = $_GET['userId'];
}

if(isset($_POST['Order']))
{
$model->attributes=$_POST['Order'];
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}

$this->render('create',array(
'model'=>$model,
));
}



我当初认为,在action里获取前端表单值的方式是$model->attributes=$_POST['Order'];所以前端表单里的所有属性必须对应一个models/xx.php。


我原以为前端表单提交到yii后端有三种方式:
1,上面的这种方式。最纯粹的方式。
2,完全抛开yii的方式,使用原生态方式获取表单值,在通过GET/POST/AJAX到yii的action。
3,两者的结合。即在js中一部分使用$("#form_id").submit(),另一部分使用post方式提交。


[b]二、实际的情况[/b]

实际并非如此,其实yii方式的views展示,本质还是要解析为html,css和javascript。即只有两种,没有混合型。即:
1,最纯粹的yii方式。
本质是system.web.helpers中的CHtml类。

2,原生态方式。这种方式更灵活。这个需建立在对yii理解深刻的基础之上。

批注:如果在展示页面时,使用了yii的插件,如日历,在原生态方式获取其值的时候,完全可以通过运行后用firebug查看其生成日历input输入框的id值,这样一定能获取到日期值。


如果您觉得本文的内容对您的学习有所帮助,您可以微信:
[img]http://dl2.iteye.com/upload/attachment/0109/0668/fb266dfa-95ca-3d09-b41e-5f04a19ba9a1.png[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值