列表中的多个复选框 [ 未指定版本 ]
这是一个程序员经常遇到的情况。例如,这些复选框的目的,是为删除这些选中的记录。
首先让我们定义一个很有用的'polymorphic' form。我相信你将会使用它了吧!
<?php
/**
* PolymorphicForm.php in 'models' directory
*/
class PolymorphicForm extends CFormModel
{
private $data = array();
public function __get($key) {
return (isset($this->data[$key]) ? $this->data[$key] : null);
}
public function __set($key, $value) {
$this->data[$key] = $value;
}
}
?>
继续模型,让我们定义在一个表'Example'中定义这些字段:keyExample,Field_one,Field_two。 你知道如何做,不是吗?…
然后在控制器ExampleAction.php,动作中处理表'Example'的列表
...
// an over simplified 'list' action
public function actionList ()
{
$form = new PolymorphicForm;
$this->render("list", array(
"models" => Example::model()->findAll(),
"form" => $form,
));
}
...
然后在文件list.php定义视图
<script language="javascript">
function byebye ()
{
// need a confirmation before submiting
if (confirm('Are you sure ?'))
$("#myForm").submit ();
}
$(document).ready(function(){
// powerful jquery ! Clicking on the checkbox 'checkAll' change the state of all checkbox
$('.checkAll').click(function () {
$("input[type='checkbox']:not([disabled='disabled'])").attr('checked', this.checked);
});
});
</script>
<?php echo CHtml::beginForm("index.php?r=Example/delete", "post", array("id"=>"myForm")); ?>
<table>
<tr>
<th><?php echo "Blabla" ?></th>
<th><?php echo "Blabla bis"; ?></th>
<th>
All <?php echo CHtml::activeCheckBox($form, "checkAll", array ("class" => "checkAll")); ?>
<button
type="button"
onClick="byebye()"
>
Delete
</button>
</th>
</tr>
<?php foreach($models as $n=>$rec): ?>
<tr>
<td>
<?php echo CHtml::encode($rec->Field_one); ?>
</td>
<td>
<?php echo CHtml::encode($rec->Field_two); ?>
</td>
<td>
<?php echo CHtml::activeCheckBox($form, "checkRecord_$rec->keyExample"); ?>
</td>
</tr>
<?php endforeach; ?>
</table>
<?php echo CHtml::endForm(); ?>
最后,我们巧妙的来处理这些在ExampleAction.php的checkboxs:
...
/**
* Deletes a range of model
* If deletion is successful, the browser will be redirected to the "list" page.
*/
public function actionDelete()
{
// I want a post
if(Yii::app()->request->isPostRequest)
{
// parse $_POST variables
foreach($_POST["PolymorphicForm"] as $key => $val) {
// is one a these checkbox ?
if (strstr ($key, "checkRecord")) {
// checkbox in state checked ?
if ($val == 1) {
// get the key of the record
$ar = explode ("_", $key);
// deleting record
$model = Example::model()->findByPk ($ar[1])->delete ();
}
}
}
$this->redirect(array("list"));
}
else
throw new CHttpException(400,"Invalid request. Please do not repeat this request again.");
}
...
结果测试,我们访问 http://myHttpServer/myApp?r=Example/list
可以检验
我希望这将对一些Yii程序员特别有帮助。
╃巡洋艦㊣ 北京
注册时间:2010-11-21
最后登录:6小时前
在线时长:1674小时13分
最后登录:6小时前
在线时长:1674小时13分
- 粉丝1369
- 金钱76368
- 威望845
- 积分101558
共 3 条评论
不错
在哪里下载这个扩展啊?
是将原图压缩显示缩略图吗