Problem z dodawaniem rekordu

Stworzyłem panel w celu dodania nowej grupy użytkowników, za każdym razem kiedy nacisnę przycisk formularza, wszystkie rekordy dodają się 3 lub 4 razy.

Model:




<?php


class GroupModel extends CFormModel

{

    public $group_id;

    public $group_name;

    public $group_moderator;

    public $group_deleted;

     	 	 	

    public function rules()

    {

		return array(

    		array('group_name, group_moderator', 'required'),

    		array('group_moderator', 'numerical', 'integerOnly'=>true),

    		array('group_name', 'length', 'max'=>255),

		);

    }

    

    public function attributeLabels()

    {

		return array(

			'group_id' => 'ID grupy',

			'group_name' => 'Nazwa grupy',

			'group_moderator' => 'Moderator grupy',

		);

    }


    public function SaveGroup()

    {

        $GroupName = $this->group_name;

        $GroupModerator = $this->group_moderator;

        

        $SqlQuery = "INSERT INTO 

        crm_group

        (

        group_name,

        group_moderator

        )

        VALUES

        (

        :group_name,

        :group_moderator

        )

        ";

        $Command = Yii::app()->db->createCommand($SqlQuery);

        $Command->bindParam(":group_name",$GroupName,PDO::PARAM_STR);

        $Command->bindParam(":group_moderator",$GroupModerator,PDO::PARAM_STR);

        $DataBack = $Command->execute();

        

        return $DataBack;

    }

}


?>



Kontroler:




public function actionGroupAddAdmin()

{


            $GroupModelData = new GroupModel;

            

            if(isset($_POST['GroupModel']))

            {

                $GroupModelData->attributes=$_POST['GroupModel'];

              

		        if($GroupModelData->validate())

		        {

		        	echo $GroupModelData->SaveGroup();

		        	

		        	$GroupModelData->group_name = '';

		        	$GroupModelData->group_moderator = '';

                    

                                $GroupUpdated = true;

		        }

            }

            

            $ModeratorsOfGroup = GroupModel::ModeratorsGroups();

            

            $this->render('groupaddadmin', array('GroupModelData'=>$GroupModelData,'ModeratorsOfGroup'=>$ModeratorsOfGroup,'GroupUpdated'=>$GroupUpdated));

}



Witaj,

Z tego co widzę, to wszystko wygląda raczej w porządku…

Mogę doradzić włączenie opcji debugowania i zapisz polecenia SQL, jakie są wywoływane. Wtedy sprawdzisz, gdzie dokładnie wywoływany jest 3 razy INSERT.

Poproszę jeszcze plik widoku groupaddadmin. Może tam się jakiś paproch wdarł. Koniecznie włącz debugowanie zapytań SQL.

a ja radze sprawdzic czy w widoku gdzie jest renderowany formularz masz wlaczona opcje ‘enableAjaxValidation’, ktora po kazdej zmianie ktoregokolwiek z pol wysyla dane z formularza na serwer… widze, ze w akcji nie masz obslugi tego typu requestow do walidacji, wiec kazdy z nich spowoduje normalne dodanie rekordu do bazy. sam juz kiedys mialem taka sytuacje, wiec strzelam, ze to na 99% to.

Dzięki, problem rozwiązany. Miałeś rację


enableAjaxValidation

był włączony.