我在这里要做的是通过从AjaxSubmitButton传递它们并调用控制器/动作来向表中插入一些值。
首先是控制器操作
public function actionAddit()
{
$connection = yii::app()->db;
$transaction=$connection->beginTransaction();
try
{
$connection = yii::app()->db;
$sql1 = "INSERT INTO apTracker (id, title,createdDate,owner) VALUES(:id, :title,:createdDate,:owner)";
$command=$connection->createCommand($sql1);
$command->bindValue(":id", $_POST['id']);
$command->bindValue(":title", $_POST['title']);
$command->bindValue(":createdDate", new CDbExpression('NOW()'));
$command->bindValue(":owner", $_POST['o']);
$command->execute();
$transaction->commit();
}
catch(Exception $e)
{
$transaction->rollBack();
$this->refresh;
}
这是视图文件中的Ajax按钮:
<?php echo CHtml::ajaxSubmitButton('Yes!',
array('/entry/addit'),
array(
'type'=>'POST',
'data' => array('id' => '1','title' => 'Untitled','o'=>'6'),
'success' => 'js:function(){window.location="site/message"}',
));?>
嗯,我不知道究竟是什么,但它不起作用。但是,如果我删除命令bindvalue并在sql查询本身中硬编码一些值,它就可以工作。所以,我猜测问题可能是将值从AjaxSubmit部分传递给控制器。我在这里做错了什么,但不能确切地知道是什么。有帮助吗?
编辑:好的,抱歉编辑混乱,问题又恢复原状。我已经尝试过eggyal的解决方案,但是,我仍然无法让它工作。
答案 0 :(得分:1)
您将字符串文字'NOW()'
作为:createdDate
参数传递,该参数无效。只需在SQL中使用NOW()
:
$sql1 = '
INSERT INTO apTracker (id, title, createdDate, owner) VALUES
(:id, :title, NOW(), :owner)
';
$command = $connection->createCommand($sql1);
$command->bindValue(':id', $_POST['id']);
$command->bindValue(':title', $_POST['title']);
$command->bindValue(':owner', $_POST['o']);
$command->execute();
CHtml::ajaxSubmitButton
的第二个($url
)参数应该是一个字符串,而不是一个数组:
<?php
echo CHtml::ajaxSubmitButton(
'Yes!',
'/entry/addit',
array(
'type' => 'POST',
'data' => array('id' => '1', 'title' => 'Untitled', 'o'=>'6'),
'success' => 'js:function(){window.location="site/message"}',
)
);
?>
您无需在$connection
区块内重新分配try
。