Yii + newbie: застрял при отправке сгенерированной Ajax формы с использованием Yii Framework - PullRequest
0 голосов
/ 06 мая 2011

У меня хорошие первые дни, когда я использую Yii, но у меня возникают проблемы с получением вещей, которые я писал «из пальца».

Вот фон для моего вопроса:

Я создал модель проекта, контроллер и представление (работает нормально), а в файле 'views / project / _form.php' я поместил ссылку ajax, которая отображает частичное представление: форму, принадлежащую другой модели, с именем 'picture',

Итак, у '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();
    }

и файл '_addPicture.php' в папке / projekt / view имеет внутри «cactiveform», корректно загружая «$ model» (я вижу, как мои данные выгружены в БД и т. Д.)1014 * Проблема:

Когда я нажимаю «сохранить» во вновь сгенерированной форме, Yii отправляет меня на новую белую страницу, содержащую эту форму, вместо ее сохранения.Вот URL, который Yii отправляет мне на:

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

Я смутно осознаю, что это может иметь какое-то отношение ко мне, не сообщая Yii, какой контроллер использовать (?), Но я не знаю, как указатьконтроллер (если это так)

Можете ли вы указать мне направление?Спасибо

1 Ответ

1 голос
/ 06 мая 2011

Используя cactiveform, вы определяете действие как параметр cactiveform:

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

Обычно действие «связано» с кнопкой сохранения, которую вы видите в форме.

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

Кстати: я думаю, что ваш Ajax-Link не будет использоваться, если вы нажмете «сохранить»

я не говорю Yii, какой контроллер использовать (?)

.. посмотрите на опцию "action" из cactiveform

Yii отправляет меня на новую белую страницу, содержащую эту форму вместо сохранения

Это верно. Потому что с помощью стандартной кнопки «сохранить» Yii выполняет действие. Если действие - actionAddPicture, фактически вы не обрабатываете данные postes.

Это означает, что вам нужно что-то подобное (простой пример, который вы должны настроить для своих нужд):

if(isset($_POST[<model>]) )  
    {   $model=new model();
        $model->attributes=$_POST[<model>];
        $model->save;
[...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...