Yii Framework Forum: [..]hat keine Methode namens "getIsNewRecord"[..] - Yii Framework Forum

Jump to content

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

[..]hat keine Methode namens "getIsNewRecord"[..] Rate Topic: -----

#1 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 03 November 2009 - 04:03 PM

Vorweg: Ich rufe nirgendswo die Methode auf, in meinem ganzen Workspace!!!
Dennoch erhalte ich folgenden Stack trace.

Ich habe einige Methoden in meinem Kontroller add und get genannt. Laut API gibt es keine Methoden die so heißen


exception 'CException' with message 'xxxController hat keine Methode namens "getIsNewRecord".' in E:\Workspace\yii\framework\base\CComponent.php:218 
Stack trace: 
#0 [internal function]: CComponent->__call('getIsNewRecord', Array) 
#1 E:\Workspace\yii\framework\db\ar\CActiveRecord.php(1381): xxxController->getIsNewRecord() 
#2 E:\Workspace\blog2\protected\controllers\xxxController.php(151): CActiveRecord->delete() 
#3 E:\Workspace\yii\framework\web\actions\CInlineAction.php(32): xxxController->actionShow() 
#4 E:\Workspace\yii\framework\web\CController.php(300): CInlineAction->run() 
#5 E:\Workspace\yii\framework\web\filters\CFilterChain.php(129): CController->runAction(Object(CInlineAction)) 
#6 E:\Workspace\yii\framework\web\filters\CFilter.php(41): CFilterChain->run() 
#7 E:\Workspace\yii\framework\web\CController.php(957): CFilter->filter(Object(CFilterChain)) 
#8 E:\Workspace\yii\framework\web\filters\CInlineFilter.php(59): CController->filterAccessControl(Object(CFilterChain)) 
#9 E:\Workspace\yii\framework\web\filters\CFilterChain.php(126): CInlineFilter->filter(Object(CFilterChain)) 
#10 E:\Workspace\yii\framework\web\CController.php(283): CFilterChain->run() 
#11 E:\Workspace\yii\framework\web\CController.php(257): CController->runActionWithFilters(Object(CInlineAction), Array) 
#12 E:\Workspace\yii\framework\web\CWebApplication.php(310): CController->run('show') 
#13 E:\Workspace\yii\framework\web\CWebApplication.php(120): CWebApplication->runController('xxx/show/i...') 
#14 E:\Workspace\yii\framework\base\CApplication.php(135): CWebApplication->processRequest() 
#15 E:\Workspace\blog2\index.php(11): CApplication->run() 
#16 {main} REQUEST_URI=/blog2/xxx/show/id/111376.html

Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#2 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,016
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 03 November 2009 - 04:58 PM

Hmm. Wie sieht denn der Code um Zeile 151 in xxxController.php aus?
0

#3 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 03 November 2009 - 05:01 PM

Fehler soweit gefunden.

Ich habe eine Methode in meinem Controller delete benannt.
Habe die Methode in remove() umbenannt.
Zeile 151 ist leer :D
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#4 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,016
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 04 November 2009 - 03:26 AM

Jo, jetzt vielleicht :)

Aber siehe Aufrufstack: In Zeile 151 wurde ein delete() auf ein Objekt vom Typ CActiveRecord ausgeführt. Und in delete() wird dann halt das getIsNewRecord() aufgerufen. Hätt mich jetzt fast interessiert, wie das Zustande kam, dass $this in delete() dann plötzlich als xxxController interpretiert wird.
0

#5 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 04 November 2009 - 05:01 AM

Nein getIsNewRecord() wird nirgendswo aufgerufen.

Hier der Code aus remove(), Vorgänger delete()

public function remove( $dCroatianId )
{
	$dHits = xxx::model()->getNumberxxx_xxx( ( $dxxxId ));
	if ( $dHits == 0)
	{
		$oXxx = xxx::model()->findByPk( $dXxxId );
		$oXxx->delete();

		$oYyy = yyy::model()->findByAttributes(array('Id' => $dxxxId));
		$oYyy->delete();
		return 0;
	}
	return $dHits;
}



xxxController
Zeile 151 war doch nicht leer, habe im Model versehentlich geguckt, dort gibt es die Zeile nicht ^^

$dHits = xxx::model()->getNumberxxx_xxx( $dId );


public function getNumberxxx_xxx( $dId )
{
	$oCriteria = new CDbCriteria;
	$oCriteria->condition="Id=".$dId;
	return xxx_xxx::model()->count( $oCriteria );
}

Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#6 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,016
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 04 November 2009 - 05:07 AM

Ich meinte im delete() von CActiveRecord (framework-code).

Der Callstack zeigt ja, wie die Aufrufe ineinander verschachtelt sind:

In deinem Controller hast du in 151 CActiveRecord->delete() aufgerufen. Und innerhalb dieser Funktion wird eben getIsNewRecord() aufgerufen.

Den Callstack solltest du dir mal etwas näher ansehen, das hilft ungemein bei Fehlern wie diesen. Tipp: Von unten nach oben lesen!

An deinem Code kann ich auch nicht erkennen, wie das Problem zustande kam (auch nicht mit delete()-Funktion im Controller). Merkwürdig.
0

#7 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 04 November 2009 - 07:07 AM

jetzt sehe ich auch, dass das lesen von unten nach oben einfacher ist ^^.

Das Problem ist aufjeden Fall weg, nachdem ich die Methode umbenannt habe.
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
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