作者:zccst
一、我之前理解的yii表单提交
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方式提交。
二、实际的情况
实际并非如此,其实yii方式的views展示,本质还是要解析为html,css和javascript。即只有两种,没有混合型。即:
1,最纯粹的yii方式。
本质是system.web.helpers中的CHtml类。
2,原生态方式。这种方式更灵活。这个需建立在对yii理解深刻的基础之上。
批注:如果在展示页面时,使用了yii的插件,如日历,在原生态方式获取其值的时候,完全可以通过运行后用firebug查看其生成日历input输入框的id值,这样一定能获取到日期值。
如果您觉得本文的内容对您的学习有所帮助,您可以微信:
分享到:
相关推荐
Yii框架在处理表单时提供了一种高效且灵活的方法,使得开发者可以轻松地创建和管理用户输入。在Yii中,表单的处理涉及到模型、控制器和视图的交互。接下来,我们将深入探讨Yii中表单的使用方法。 首先,创建模型是...
Yii2支持模型绑定,这意味着表单提交的数据可以自动与模型属性关联,方便进行验证和处理。 6. **自定义样式** 要调整下拉框的外观,可以添加CSS类或使用前端框架如Bootstrap。Yii2默认使用Bootstrap样式,因此...
yii2 创建表单 笔记
Yii框架的表单模型与验证用法是其核心功能之一,为开发者提供了从简单的数据验证到复杂的业务逻辑验证的全面支持。以下是Yii框架表单模型和验证用法的详细介绍。 表单模型在Yii框架中的主要作用是封装表单数据,并...
在Yii中,表单处理是一个重要的部分,它涉及到前端与后端的交互以及数据验证,确保用户输入的有效性和安全性。 一、前端表单提交与验证 1. **前端原生HTML提交**: - 原生HTML标签:使用`<input>`、`<a>`等标签...
1. **安装与配置**:介绍如何在服务器上安装Yii,以及设置基本的项目环境。 2. **快速入门**:通过一个简单的“Hello, World!”示例来引导开发者了解Yii的基本结构和工作原理。 3. **基础概念**:详细讲解MVC模式,...
在Yii中,可以利用各种小部件和方法来创建表单,并与控制器动作进行绑定。 接下来,具体分析Yii框架中的表单用法实例: 1. 创建模型类示例:下面的代码演示了一个简单的登录表单模型类(LoginForm)的定义。此类中...
按Yii文档里的描述,Yii在处理表单的一般过程是: 创建表单对应的模型类,设置字段验证规则创建表单提交对应的action,处理提交的内容在视图中创建表单form在刚刚的一个小项目里,想使用ajax提交表单信息并验证保存...
1. **form**: 这个文件夹可能包含了对Yii的表单类进行扩展的代码,使得表单元素可以自动应用Bootstrap的样式。例如,可能会有自定义的ActiveForm类,用于生成带有Bootstrap样式的表单元素。 2. **gii**: Gii是Yii的...
7. 表单和验证:Yii 提供了方便的表单处理和数据验证工具,可以快速创建和验证用户输入,减少错误和安全风险。 8. 视图助手:Yii 视图助手系统提供了一系列预定义的函数,如 HTML 助手,URL 助手等,方便开发者生成...
8. **Gii代码生成工具**:Gii 是Yii自带的代码生成工具,能自动生成模型、控制器、表单和CRUD操作,大大提高了开发效率。 9. **Web服务**:Yii 支持RESTful API开发,便于构建面向服务的架构。 10. **错误和日志...
本文将通过实例详细分析基于Yii框架的用户注册表单验证功能,在模型(model)、视图(view)以及控制器(controller)层的具体实现技巧。 **模型层(Model)** 在Yii框架中,模型层代表应用程序的业务逻辑和数据模型。对于...
- Yii提供了强大的表单构建功能,包括自动验证和错误处理。 - 表单数据的接收和处理,以及与模型的交互,都有详细的指导。 6. **模板引擎与视图**: - Yii的CView和CTemplateView类提供了强大的视图渲染功能,...
6. **表单处理**:Yii提供表单创建和验证工具,可以轻松创建HTML表单并处理用户输入,防止常见的安全问题。 7. **错误处理与日志**:Yii框架内置了错误处理和日志记录机制,帮助开发者追踪和调试问题。 8. **国际...
知道yii的表单是怎样生成的吗,这里就有你想要答案!
只需在模型中定义验证规则,Yii就能自动处理表单提交并进行验证。 七、安全与认证 Yii提供了多种安全特性,如CSRF防护、输入过滤、密码哈希等。它还有用户认证和授权机制,如基于角色的访问控制(RBAC),帮助你...
Yii提供了一套强大的表单验证规则,对于新闻系统中的新闻发布表单,可以轻松实现对输入内容的验证,如标题的长度限制、内容的非空检查等。 8. **AJAX集成** Yii支持AJAX操作,可以实现无刷新的用户体验。在新闻...
3. **Form处理**:Yii提供了表单建模和验证功能,简化了表单数据的接收和验证过程。 4. **Ajax支持**:Yii内置AJAX功能,可以轻松实现页面的部分刷新,增强交互性。 ### 三、Yii高级特性 1. **Gii代码生成工具**...