Yii Framework Forum: Controller - Verständnisfrage - Yii Framework Forum

Jump to content

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

Controller - Verständnisfrage Fehlerseiten, Controller und Model Rate Topic: -----

#1 User is offline   yii 

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

Posted 23 October 2009 - 04:44 PM

Hallo,
ich habe eine Verständnisfrage zu Controllern.

1. Meine URL wird aufgerufen, z.B.:
http://localhost/blog/suche/anzeigen/1


2. Die Rule heißt demnach
'suche/anzeigen/<value:[0-9]>' => 'search/show',


3. Die Action wird aufgerufen (hier nun meine Frage)
  • Wir nehmen an, wir benutzen keine Datenbank, wir greifen auf ein Array zu [0] => 'Hallo', [1] => 'Bye', etc.
  • Es soll eine Fehlermeldung ausgegeben werden


Folgender Aufruf, search heißt der Controller, gibt ein leeres Objekt zurück (nicht die übergebene Variable
public function actionShow ()
{
	$x = new search;
	echo "<pre>";
	print_r($x);
	echo "</pre>";
}


search Object
(
    [_validators:private] => 
    [_errors:private] => Array
        (
        )

    [_va:private] => 
    [_se:private] => 
    [_e:private] => 
    [_m:private] => 
)



Um auf die Variable zuzugreifen benutze ich folgende, vielleicht sehr unnützlichen Aufruf
<?php
public function actionShow ()
{
	$searchword = $_GET['value'];
	if ( $search->model()->checkSearchWord( $searchword ) )
	{
		$this->render('xxx', 'etc.');
	}
	else
	{
		throw .... ???? (eigene Fehlerseite eingebettet im Layout)
	}
}
?>


Folgende Verständnisfragen habe ich nun:
  • Gibt es einen anderen Weg auf die URL - Parameter zuzugreifen?
  • Ins Model gehören normalerweise doch nur Funktionen die auf die Datenbank zugreifen, oder dürfen / sollen dort auch Funktionen hinein geschrieben werden, mit denen man Strings modifiziert.
  • Wie kann ich meine eigene Fehlerexception mit Code 404 erstellen, falls kein gültiger Wert übergeben wurde.


Fragen zur Fehlerseite
  • Wie leite ich auf eine eigene Fehlerseite mit dem Layout, wenn die Rule fehlschlägt
  • Wie leite ich auf eine eigene Fehlerseite mit dem Layout, wenn im Controller etwas fehlschlägt

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

#2 User is offline   mbi 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 604
  • Joined: 08-May 09

Posted 23 October 2009 - 06:32 PM

eigene Fehlerseite:
http://www.yiiframew...oc/cookbook/47/
ich würde hier statt mycontroller den SiteController nehmen und eine actionError-Methode erstellen


wie man auf Request-Variablen zugreift:
$id = intval(Yii::app()->request->getParam('id', 0));
if(!$id) {
    throw new CHttpException(404, 'Page not found');
}


Funktionen, die Daten des Models manipulieren, gehören entweder ins Model oder in eigene Bibliothek ausgelagert.
0

#3 User is offline   yii 

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

Posted 24 October 2009 - 08:50 AM

Thema: ErrorHandling

Ich habe folgenden Code in meine main.php eingefügt
	'errorHandler'	=> array(
		'errorAction'	=> 'engine/error',
	),


Anschließend habe ich in der views/engine/error.php folgenden Code geschrieben

<?php $this->pageTitle= $error['code'] . " Ihre Eingabe ist ungültig"; ?>
<h2><?php echo $error['code'] ?> Seite existiert nicht.</h2>

Die von Ihnen aufgeforderter URL, <b><?php echo Url::getUrl() ;?></b>, konnte nicht aufgelöst werden.


Gründe


In meinen Engine-Controller habe ich folgende Action definiert
	public function actionError()
	{
		$error = Yii::app()->errorHandler->error;
		print_r(Yii::app()->request);
		if ($error)
		{
			$this->pageTitle = $error['code'] . " Seite konnte nicht aufgerufen werden. ";
			$this->render('error', array('error'=>$error));
		}
		else
			throw new CHttpException(404, 'Page not found.');
	}



Das Problem ist nun jedoch, dass egal welche falsche Seite ich aufrufe immer diese Error-Seite angezeigt wird.



Die Seite sollte jedoch nur aufgerufen werden, wenn ich den Engine Controller falsch aufrufe, sprich falsche Parameter eingegeben worden sind.
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