我在这里想要做的是通过从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;
}
这是视图文件中的Ajaxbutton:
<?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尝试过该解决方案,但是,我仍然无法使它起作用。
最佳答案
您正在传递字符串文字'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();
$url
的第二个(CHtml::ajaxSubmitButton
)参数应该是字符串,而不是数组:<?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
。