Validar control/accion

Hola compañeros, estoy buscando en la documentación y no encuentro cómo comprobar si una cadena control/acción es correcta, es decir, que la cadena contenga una acción que existe dentro de la app, y de ser así crear una url a partir de ella. Esquemáticamente:

$rd = $_GET[‘rd’];

// Si es control/acción válido crear url, o bien validar después de createUrl:

$url = $this->createUrl($rd);

Estoy usando Yii 1.1.

Gracias!

He encontrado algo en StackOverflow, prueba y me dices si te funciona:


method_exists(Yii::$app->controllerNamespace . $controllerName, 'action' . ucfirst($actionName));

http://stackoverflow.com/a/29406603/3444714

En ese caso la variable $actionName corresponde con tu $rd, OJO, no te olvides de sanitizar su valor para evitar futuros errores.

Ok, gracias. Me refería a algún método de Yii que lo haga directamente, pero si no encuentro otra manera voy a probarlo y te cuento. Si lo hago así es creando una función que valide la ruta.

Hola compañero, al final lo que he hecho es un pequeño método que no tiene mucho que ver con lo que pregunté. El código que pusistes tiene clamorosos errores de sintaxis y no consigo entenderlo.

Se trata de que la acción recibe un parámetro get y en función de ese parámetro hace una redirección, lo que he hecho es codificar esos parámetros y asignarles un control/accion a cada uno, y si no está contemplado lo asigna por defecto. Lo comparto para quien interese:

public function crearUrl() {

	// Crea y devuelve url siempre válida a partir de la propiedad rd


	$this->rd = strtolower( trim($this->rd) );


	// Claves rd válidas, definir aquí:


	$rds = array(


		'log' => 'site/login',


		'ind' => 'socios/index',


		'edt' => 'socios/editar',


		); 


	


	// Crea acción validada:


	$accion = empty( $rds[$this->rd] ) ? 'site/login' : $rds[$this->rd];


	


	// Crea url relativa y devuelve valor:


	$url = Yii::app()->createUrl($accion);	


	return $url;





} //:Fin crearUrl()