好的我使用ajax提交工作代码来捕获并在我的数据库中插入记录。目前虽然我必须从一个模型视图转到另一个模型视图才能执行此操作。我试图结合所有代码并从第一个模型中的视图执行。
以下是我的代码尝试。它显示为逻辑流程。
在下面的代码中,我使用了一个选项卡并在ModelA中渲染部分,然后最终从ModelB调用ajaxSubmitButton并使用ModelB控制器将数据输入到我的数据库中。
我现在遇到的问题是它总是插入一条记录,但不是输入正确的记录,而是插入渲染部分中显示的第一条记录(ItemId = 1,无论我执行代码的是哪一项从)。
<?php
//Model A View
$tabs = array(
array('id' => 'tab1', 'label' => 'tab', 'content' => $this->renderPartial('/modelB/_modelBView', array('model' => $model), true)),
);
$this->widget('bootstrap.widgets.TbTabs', array(
'type' => 'tabs',
'tabs' => $tabs,
));
//_modelBView
if (!Yii::app()->user->isGuest)
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
'template' => '{items}}',
));
//_view
echo $data->checkItem;
//ModelB
public function getCheckItem ()
{
if (something...)
{
echo 'Status Good';
}
else {
echo CHtml::ajaxSubmitButton(
'Get Item',
array('/modelB/getItem'),
array(
'type'=>'POST',
'data' => array('ItemId' => $this->ItemId, 'Type' => $this->Type),
'success' => "function(){window.location='".Yii::app()->createUrl('/modelC/list') . "'}",
)
);
}
}
//ModelB Controller
public function actionGetItem()
{
$connection = yii::app()->db;
$transaction=$connection->beginTransaction();
try
{
$connection = yii::app()->db;
$sql = "INSERT INTO modelC (ItemId, Type)
VALUES(:item, :type)";
$command=$connection->createCommand($sql);
$command->bindValue(":item", $_POST['ItemId']);
$command->bindValue(":type", $_POST['Type']);
$command->execute();
$transaction->commit();
}
catch(Exception $e)
{
$transaction->rollBack();
}
}