2011-05-06 41 views
0

我有很好的使用Yii的第一天,但​​遇到了一些麻烦,让我用'手指'来写东西。Yii +新手:卡在使用Yii框架提交ajax生成的表单

这里是我的问题背景:

我创建了一个“项目”的模式,控制器和视图(正常工作),并在“视图/工程/ _form.php这个”我把一个Ajax链接,显示部分视图:属于另一个模型的表单,名为'图片'。

因此, '若干意见/项目/ _form.php这个' 有这里面:

<?php 

    echo CHtml::ajaxLink('Add picture', array('projekt/addPicture'), 
             array('update'=>'#req_res') 
     ); 

?> 

<div id="req_res">...</div> <!-- here the ajax form shows --> 

的/项目/给AddPicture行动成功地显示了形式使用这样的代码:

public function actionAddPicture() 
    { 

      $model=new Picture; 
      $this->renderPartial('/projekt/_addPicture', array('model'=>$model)); 
      Yii::app()->end(); 
    } 

和/ projekt/view文件夹中的'_addPicture.php'文件内部有一个“cactiveform”,正确加载'$ model'(我可以看到我的数据在数据库中等)

问题:

当我在新生成的表单上点击“保存”时,Yii会将我发送到包含此表单的新白页,而不是保存它。下面是Yii的向我的网址:

 http://localhost/projekt/addPicture?_=1304644637668 

我隐约知道,它可能有一些与我没有告诉Yii中要使用的控制器,但我不知道如何指定控制器((?)如果是这种情况)

你能指点我一些方向吗?谢谢

回答

1

通过uesing cactiveform定义操作作为cactiveform的一个选项:

$form=$this->beginWidget('CActiveForm', array(
         'action'=>Yii::app()->createUrl(...), .... 

通常的动作是“连接”到保存按钮,你在表单见。

When i hit 'save' on the newly generated form, 

BTW:我觉得你的Ajax的链接将不能使用,如果你点击 “保存”

我不告诉Yii中要使用的控制器

(?)

..查看cactiveform的“动作”选项

Yii发送给我一个新的白页,再次包含此表单而不是保存它

没错。因为通过使用默认的“保存”按钮Yii执行该操作。如果action是actionAddPicture,实际上你不处理postes数据。

这意味着,你需要类似的东西(只是一个简单的例子,你必须针对您的需求):

if(isset($_POST[<model>])) 
    { $model=new model(); 
     $model->attributes=$_POST[<model>]; 
     $model->save; 
[...] 
+0

谢谢!定义正确的“动作”并将“actionAddPicture()”动作移动到Picture控制器而不是项目控制器即可解决问题 – 2011-05-07 13:49:24