我想要一个下拉列表和一个提交按钮,当按下按钮时我想获取所选项目的文本并将其存储到db中。我在视图中的下拉代码是:
<?php
$form=$this->beginWidget('CActiveForm', array(
'enableAjaxValidation'=>true,
'clientOptions'=>array('validateOnSubmit'=>true
),
)); ?>
<?php echo $form->labelEx($model,'actTopic'); ?>
<?php echo $form->error($model,'actTopic'); ?>
<?php
echo CHtml::dropDownList('actTopic', $category,$list,
array('empty' => '... '));
?>
它会生成一个下拉列表。 但我不知道如何在我的动作功能中获取所选项目。 动作功能是:
public function actiongivePoint()
{
$model=new GivePointForm;
if(isset($_POST['GivePointForm'])){
$model->attributes=$_POST['GivePointForm'];
if($model->validate()){
$actTopic=($model->actTopic);
$actPoint=($model->actPoint);
$actId=($model->actId);
$stCode = (int) $_GET['stCode'];
$connection=Yii::app()->db;
$connection->active=TRUE;
$actIdReader =Yii::app()->db->createCommand()
->select ('actID')
->from('refrencepoint')
->where("actTopic=:actTopic")
->queryScalar(array(':actTopic'=>$actTopic));
$search =Yii::app()->db->createCommand()
->select ('count(*)')
->from('point')
->where(array('and', 'actId=:actID', 'stCode=:stCode') )
->queryScalar(array(':actId'=>$actId,':stCode'=>$stCode));
if($search !=0){
$month=CDateFormatter::formatMonth(now());
$year=CDateFormatter::formatMonth(now());
$command =$command->update('point', array(
'year'=>$year,'month'=>$month,
'pcounter'=>new CDbExpression('pcounter + 1'),),
(array('and','actId'=>$actId, 'stCode'=>$stCode))) ;
Yii::app()->user->setFlash('point','....');
}
else{
$month=CDateFormatter::formatMonth(now());
$year=CDateFormatter::formatMonth(now());
$command->insert('point', array('actId'=>$actId,
'stCode'=>$stCode,'year'=>$year,'month'=>$month,
'pcounter'=>new CDbExpression('pcounter + 1')));
Yii::app()->user->setFlash('point','....');
}
}
}
$this->render('givePoint',array('model'=>$model));
}
我应该说我不使用有效记录。
使用上面的代码看起来一切正常,但是当我按下提交按钮时没有任何变化,数据库没有变化,甚至没有错误只是页面刷新!!
这里有什么问题? 我厌倦了尝试......
答案 0 :(得分:0)
我认为你只是喜欢它。
你首先使用foreach循环。我不确定你列出的是哪种类型的东西。但你需要做下面的工作。
这是一个例子
foreach($model->category as $list) {
$list['id'] = $list->name;
}
echo CHtml::dropDownList($model, 'actTopic', $list);
现在您调试代码。
public function actiongivePoint()
{
$model=new GivePointForm;
if(isset($_POST['GivePointForm'])){
print_r($_POST['GivePointForm']);
exit; //Just check either the form is posted or not and values are coming or not.
$model->attributes=$_POST['GivePointForm'];
if($model->validate()){
$actTopic=($model->actTopic);
echo $actTopic ;
exit ; // Check either your dropdown item id is coming or not.
希望对你有所帮助。
感谢。