0

ここでやろうとしているのは、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で解決策を試しましたが、まだ機能させることができません.

4

1 に答える 1

1
  1. 'NOW()'文字列リテラルをパラメーターとして渡してい:createdDateますが、これは無効です。NOW()代わりにSQLで使用してください:

    $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();
    
  2. の 2 番目の ( $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"}', 
        )
      );
    ?>
    
  3. $connectionブロック内で不必要に再割り当てしていますtry

于 2012-05-28T19:06:30.500 に答える