system
(system)
March 2, 2009, 2:30pm
1
弄了好久,找了好些相关的帮助文件和api,不过还是没解决,只能再来请教强了,
是这样,我需要点击一个链接,然后将数据库里面其中一个字段的值更新。链接代码如下:
<?php echo CHtml::link('接受订单',array('orderacc','id'=>$model->orderId)); ?>
action部分代码
public function actionOrderacc()
{
$orderDetail=Naming::model()->findByAttributes(array('orderId'=>$_GET['id']));
//print_r($orderDetail);
$orderDetail->orderstatus=2;
$orderDetail->save();
$this->redirect(array('user/orderlist'));
$this->render('orderacc',array('orderDetail'=>$orderDetail));
}
view文件为空的php。
这样操作是不行的,尝试用linkbutton,但是连delete也不起作用(范例admin里面拷贝做相应修改的),所以放弃了。
虚心请教。
qiang
(Qiang Xue)
March 2, 2009, 2:39pm
2
不是太明白你碰到的问题。你这段代码应该可以工作啊。有两点需要注意的:
你这里的render()不起作用的,因为redirect后就退出了。
你的orderacc是通过GET方式被调用的,这样不是特别好。最好是通过POST方式,因为这个动作要修改数据。你可以用linkButton。
system
(system)
March 2, 2009, 2:58pm
3
因为例子里面通过CHtml::link传递的参数你用了GET方式,所以我以为Yii就是设定成这个方式来获取url的参数传递的。
另外是关于linkButton的格式的,
<?php echo CHtml::linkButton(‘Delete’,array(
'submit'=>'',
'params'=>array('command'=>'delete','id'=>$model->usernum),
'confirm'=>"Are you sure to delete #{$model->usernum}?")); ?>
以上代码是自带的CRUD例子中,delete按钮的代码,那么如果我需要做的是更新orderid=1的记录中的status为2,应该如何来写呢?
谢谢。
system
(system)
March 2, 2009, 3:00pm
4
另外 我把上面代码redirect放到view里面代码可以运行了。
qiang
(Qiang Xue)
March 2, 2009, 3:03pm
5
你应该需要这些:
<?php echo CHtml::linkButton('接受订单',array(
'submit'=>array('orderacc'),
'params'=>array('id'=>$model->orderId))); ?>
在orderacc动作里你可以通过$_POST['id']获得id值。
<?php
public function actionOrderacc()
{
$orderDetail=Naming::model()->findByAttributes(array('orderId'=>$_POST['id']));
//print_r($orderDetail);
$orderDetail->orderstatus=2;
$orderDetail->save();
$this->redirect(array('user/orderlist'));
}
system
(system)
March 2, 2009, 3:19pm
7
public function loaduser($id=null)
{
if($this->_user===null)
{
if($id!==null || isset($_GET['id']))
$this->_user=user::model()->findbyPk($id!==null ? $id : $_GET['id']);
if($this->_user===null)
throw new CHttpException(500,'The requested user does not exist.');
}
return $this->_user;
}
这是例子中的获取用户信息的函数,这里怎么不用post而用get呢?同样是通过url传递的id
system
(system)
March 2, 2009, 3:25pm
8
<?php echo CHtml::link('接受订单',array('orderacc','id'=>$model->orderId)); ?> 是不是通过上面的链接只能用$_GET来获取传递的参数呢?
因为我把刚才的GET改成POST之后就出现了Undefined index: id错误,错误的地方就是$orderDetail=Naming::model()->findByAttributes(array('orderId'=>$_POST['id']));
qiang
(Qiang Xue)
March 2, 2009, 3:40pm
9
是的。link产生的是一条普通链接,参数都在URL里,所以是GET类型的。
而linkButton是通过javascript来提交表单的,它是通过POST方式传递参数的。