Allgemeine Anleitung für Nutzung von Behaviors

Hallo zusammen,

ich habe bisher leider in der CApplication.php programmiert, um kleinere Änderungen zu nutzen. Nur habe ich nun von behaviors gelesen und will diese nun nutzen, nur finde ich auf der Website leider keinerlei Informationen oder Anleitungen, die mir helfen würden, dieses Feature korrekt einzusetzen. Könnt ihr mir da ein wenig helfen?

mfg

Armin

ein erster Lichtblick wäre vielleicht das:

http://www.yiiframew…oc/cookbook/14/

so wirklich happy bin ich nicht mit der anleitung, da es laut kommentare teilweise nicht funktioniert. muss das ganze trotzdem noch testen.

speziell: ich habe vor, beim start der anwendung zu prüfen, ob in der session schon eine sprache gesetzt ist, denn wenn nicht, dann wird die sprache des browser erkannt und gesetzt.

Update:

Ich habe nun das folgende definiert:

[code=config/main.php]<?php

'behaviors' => array(

	&#039;&#111;nbeginRequest&#039; =&gt; array(


		&#039;class&#039; =&gt; &#039;application.components.StartupBehaviour&#039;,


	)


)

?>[/code]

[code=components/Startupbehavior.php]<?php

class Startupbehavior extends Cbehavior

{

public function &#111;nbeginRequest(CEvent $event)


{


	print_r(&#039;test&#039;);





}

}

?>[/code]

Was muss ich im der behavior-Klasse denn angeben, dass beim onbeginRequest der WebApplication die Methode ausgeführt wird? oO

Ich habe hier die Lösung:

[code=config/main.php]<?php

&#039;beh&#097;viors&#039; =&gt; array(


	&#039;&#111;nbeginRequest&#039; =&gt; array(


		&#039;class&#039; =&gt; &#039;application.components.Startupbeh&#097;vior&#039;,


	)


)

?>[/code]

[code=components/Startupbehavior.php]<?php

class Startupbehavior extends Cbehavior

{

/**


 * Methode, die das Verhalten mit einer Methode verknüpft


 **/


public function attach($owner)


{


	$owner-&gt;attachEventHandler(&#039;&#111;nbeginRequest&#039;, array($this, &#039;beginRequest&#039;));


}





/**


 * Diese Methoder wird aufgerufen, bevor großartige anderer Code ausgeführt


 * wird.


 **/


public function beginRequest(CEvent $event)


{


	Yii::app()-&gt;request-&gt;redirect(&#039;http://www.google.de&#039;);





}

}

?>[/code]

Interessantes Problem. Hab grad mal bei Qiang nachgefragt. Du kannst im behavior die Methode events() verwenden, und eine Liste aller anzudockenden Events angeben. Schau dir als Beispiel mal base/CModelbehavior an, das verwendet auch Events.