Yii Framework Forum: Cactiveform - Nie Aktualizuje Pola W Tabeli - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Cactiveform - Nie Aktualizuje Pola W Tabeli Rate Topic: -----

#1 User is offline   Bartonek 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 11-March 13

Posted 14 March 2013 - 04:14 AM

Witam,

Do istniejącego, działającego formularza dodałem jedno pole checkbox o id 'archived'.

$form=$this->beginWidget('CActiveForm', array(
	'id'=>'product-form',
	'enableAjaxValidation'=>true,
        'clientOptions'=>array(
            'validateOnSubmit'=>false,
            'afterValidate'=>'js:afterValidate'
        ),

...

	<div class="row">
		<?php echo $form->labelEx($model,'archived'); ?>
		<?php echo $form->checkBox($model,'archived'); ?>
		<?php echo $form->error($model,'archived'); ?>
	</div>

...



a tak wygląda kontroler:


	public function actionUpdate($id)
	{
	    $model=$this->loadModel($id);
	    $this->performAjaxValidation($model);

		if(isset($_POST['Product']))
		{
                    $model->attributes=$_POST['Product'];
			if($model->save())
                        {
				$this->redirect(array('view','id'=>$model->id));
                        }
		}

		$this->render('update',array(
			'model'=>$model,
		));
	}



Oczywiście w tabeli również dodałem pole o tej samej nazwie. Model nie ma problemu z pobieraniem tej wartości. Niestety próba aktualizacji wartości nie przynosi żadnego skutku. Sprawdziłem w firebugu i w nagłówku POST, pole istnieje z poprawną wartością. Co może być przyczyną tego że aplikacja nie chce ze mną współpracować? :(
0

#2 User is offline   Baranek 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 35
  • Joined: 19-July 11

Posted 14 March 2013 - 04:17 AM

Wklej rules() z modelu
a dodaj cos takiego do modelu
array('archived','numerical' ,'integerOnly'=>true),

0

#3 User is offline   Bartonek 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 11-March 13

Posted 14 March 2013 - 04:21 AM

	public function rules() 	{ 
   return array( 			
   array('name', 'required'), 			
   array('promotion', 'numerical', 'integerOnly'=>true), 			
   array('category_id', 'length', 'max'=>10), 			
   array('sort_order', 'length', 'max'=>11), 			
   array('name', 'length', 'max'=>128), 			
   array('image', 'length', 'max'=>64), 			
   array('description_short_pl, description_short_en, description_long_pl, description_long_en','safe'), 			

   array('id, category_id, name, image, promotion, description_short_pl, description_short_en, description_long_pl, description_long_en', 'safe', 'on'=>'search'), 		
); 	
}



Jeśli problem leży tutaj, proszę Was o wyjaśnienie jak i dlaczego. Zależy mi przed wszystkim na zrozumeniu problemu.
0

#4 User is offline   Baranek 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 35
  • Joined: 19-July 11

Posted 14 March 2013 - 04:25 AM

Z własnego doświadczenia zauważyłem, że każe pole musi mieć metode walidacji. Z checkboxami juz przerabiałem to wiec powinno to załatwić sprawę.
array('archived','numerical' ,'integerOnly'=>true),

0

#5 User is offline   Bartonek 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 11-March 13

Posted 14 March 2013 - 04:31 AM

Rzeczywiście działa, dzięki. W takim razie po prostu będę stosował tę zasadę i nie będę drążył... ;)
0

#6 User is offline   .viktor. 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 25-August 10

Posted 14 March 2013 - 07:30 AM

View PostBaranek, on 14 March 2013 - 04:25 AM, said:

Z własnego doświadczenia zauważyłem, że każe pole musi mieć metode walidacji. Z checkboxami juz przerabiałem to wiec powinno to załatwić sprawę.
array('archived','numerical' ,'integerOnly'=>true),



Oczywiście masz rację, ale dla ścisłości żeby pole było widoczne w modelu musi mieć albo regułę walidacji albo być oznaczone jako bezpieczne "safe"
array('archived, description_short_pl, description_short_en, description_long_pl, description_long_en','safe'),

w ten sposób można np: obsługiwać dodatkowe pola, których nie ma w bazie danych a są potrzebne do obsługi formularza lub czegokolwiek.
0

#7 User is offline   Bartonek 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 11-March 13

Posted 15 March 2013 - 04:51 AM

View Post.viktor., on 14 March 2013 - 07:30 AM, said:

Oczywiście masz rację, ale dla ścisłości żeby pole było widoczne w modelu musi mieć albo regułę walidacji albo być oznaczone jako bezpieczne "safe"
array('archived, description_short_pl, description_short_en, description_long_pl, description_long_en','safe'),

w ten sposób można np: obsługiwać dodatkowe pola, których nie ma w bazie danych a są potrzebne do obsługi formularza lub czegokolwiek.


Dzięki. :)
0

#8 User is offline   aquasite.pl 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 15
  • Joined: 20-May 11

Posted 16 March 2013 - 12:29 PM

Każde pole musi mieć regułę walidacji przy masowym ($model->attributes = $_POST['Product']) przypisywaniu wartości z POST do modelu (ze względów bezpieczeństwa) - jeśli zrobisz to ręcznie - czyli w kontrolerze $model->archive = $_POST['Product']['archive'] to reguła walidacji nie musi być określona.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users