Yii Framework Forum: Model Is Not Set - Problem Z Wczytaniem Wartości Do Pola Tekstowego - Yii Framework Forum

Jump to content

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

Model Is Not Set - Problem Z Wczytaniem Wartości Do Pola Tekstowego Rate Topic: -----

#1 User is offline   tzoll 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 78
  • Joined: 28-February 13

Posted 18 March 2013 - 08:39 AM

Cześć. Mam taki problem z którym nie mogę sobie poradzić. Mianowicie:
Mam 3 tabele w bazie danych
tbl_city(id,name,commune_id)
tbl_comune(id,name)
tbl_observation(id, name, city_id)

Mam również 3 modele, z ustawionymi relacjami jak niżej:
City('idCommune' => array(self::BELONGS_TO, 'Commune', 'commune_id'),
Commune(bez relacji)
Observation('idCity' => array(self::BELONGS_TO, 'City', 'city_id').

W moim widoku (_form.php) służącym do dodawania obserwacji mam pole tekstowe jak poniżej:
$form->textFieldRow($model->idCity->idCommune,'name');?>


Problem polega na tym, że kiedy próbuję dodać nową obserwację (akcja-create) za pomocą modelu Observation, wyskakuje błąd CException:
TbInput: Failed to initialize widget! Model is not set. 

Natomiast błąd nie wyskakuje i wszystko jest ok gdy próbuję edytować istniejącą już obserwację.
Myślę, że błąd ten jest spowodowany tym, że gdy próbuję utworzyć nową obserwację, mój widok próbuje załadować pole name z modelu Commune - ale nie ma w nim żadnego odnośnika w modelu Observation. Czy ktoś mógły mnie naprowadzić jak naprawić ten błąd?

Z góy dziękuję i pozdrawiam
Tomek
0

#2 User is offline   Baranek 

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

Posted 18 March 2013 - 08:43 AM

daj fragment kontrolera, tego co ladujesz do _form.php
0

#3 User is offline   tzoll 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 78
  • Joined: 28-February 13

Posted 18 March 2013 - 09:28 AM

fragment kontrolera Observation odpowiedzialny za create- standardowy kod:
	
public function actionCreate()
	{
		$model=new Observation;

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

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

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

Dzięki
0

#4 User is offline   Baranek 

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

Posted 19 March 2013 - 02:30 AM

To moze dodaj drugi model
$city = new City;
//w widoku

$form->textFieldRow($city,'name');?>
//pozniej w cotrolerze
if($city->save()){
echo "success";
}
//i dorzuc model do widoku
 $this->render('create',array(
                        'model'=>$model,
'city'=>$city,
                ));

mozesz tez skorzystac z roszerzenia
http://www.yiiframew...ncedarbehavior/
0

#5 User is offline   tzoll 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 78
  • Joined: 28-February 13

Posted 19 March 2013 - 04:59 AM

View PostBaranek, on 19 March 2013 - 02:30 AM, said:

To moze dodaj drugi model
$city = new City;
//w widoku

$form->textFieldRow($city,'name');?>
//pozniej w cotrolerze
if($city->save()){
echo "success";
}
//i dorzuc model do widoku
 $this->render('create',array(
                        'model'=>$model,
'city'=>$city,
                ));

mozesz tez skorzystac z roszerzenia
http://www.yiiframew...ncedarbehavior/


kurcze, to rozwiązanie powyżej też nie działa:( Mi chodzi najprościej o to aby tylko wyświetlić (bez zapisywania informacji w drugim modelu) nazwę gminy (z modelu Commune) na podstawie miejscowości - wszystko działa poza jednym wyjątkiem - utworzenia nowej obserwacji - wtedy wywala błąd :(
0

#6 User is offline   luk1999 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 35
  • Joined: 20-April 11
  • Location:Poland

Posted 19 March 2013 - 03:22 PM

Skoro chcesz tylko wyświetlić nazwę gminy, to nie bardzo widzę sens używania widżetu dla tego pola.
Możesz po prostu wyświetlać tę wartość bezpośrednio w trybie edycji:
<div id="idCommune"><?php if (! $model->isNewRecord) echo $model->idCity->idCommune ?></div>

Następnie podłącz event onchange pod dropdownlist, w którym wybierasz miasto, tak, aby aktualizował zawartość div #idCommune.
Możesz się oprzeć np. na tym:
http://www.yiiframework.com/wiki/24
1

#7 User is offline   tzoll 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 78
  • Joined: 28-February 13

Posted 19 March 2013 - 08:48 PM

View Postluk1999, on 19 March 2013 - 03:22 PM, said:

Skoro chcesz tylko wyświetlić nazwę gminy, to nie bardzo widzę sens używania widżetu dla tego pola.
Możesz po prostu wyświetlać tę wartość bezpośrednio w trybie edycji:
<div id="idCommune"><?php if (! $model->isNewRecord) echo $model->idCity->idCommune ?></div>

Następnie podłącz event onchange pod dropdownlist, w którym wybierasz miasto, tak, aby aktualizował zawartość div #idCommune.
Możesz się oprzeć np. na tym:
http://www.yiiframework.com/wiki/24


Dzięki luk, o to mi dokładnie chodziło. Najprostsze rozwiązania są najlepsze. Pozdrawiam:)
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