【问题标题】:Yii + newbie: stuck at submitting ajax-generated form using Yii FrameworkYii + 新手:卡在使用 Yii 框架提交 ajax 生成的表单
【发布时间】:2011-05-06 01:51:35
【问题描述】:

我在使用 Yii 的第一天过得很愉快,但是在获取我以前用“手指”写的东西时遇到了一些麻烦。

这是我的问题的背景:

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

所以,'views/project/_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 -->

/project/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 发给我的 URL:

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

我隐约知道这可能与我没有告诉 Yii 使用哪个控制器有关(?)但我不知道如何指定控制器(如果是这种情况)

你能给我指出一个方向吗?谢谢

【问题讨论】:

    标签: ajax forms yii


    【解决方案1】:

    通过使用 cactiveform,您可以将操作定义为 cactiveform 的选项:

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

    通常,该操作“连接”到您在表单中看到的保存按钮。

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

    顺便说一句:我认为你的 Ajax-Link 不会被使用,如果你点击“保存”

    我没有告诉 Yii 使用哪个控制器 (?)

    ..看看 cactiveform 中的“action”选项

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

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

    这意味着,您需要类似的东西(只是一个简单的示例,您必须根据自己的需要进行定制):

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

    【讨论】:

    • 谢谢!定义正确的“动作”并将“actionAddPicture()”动作移动到图片控制器而不是项目控制器解决了问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多