Se me ocurre una manera de resolver esto; en tu $validate escribes algo como:
Código PHP:
'p5' => array(
'obligatoriaXp4' => array (
'required' => true,
'rule' => array('dependeP4','p5'),
'message' => 'Por favor, responda la pregunta'
),
),
En donde indicamos que p5 (pregunta 5) es obligatoria por pregunta 4 (obligatoriaXp4) entonces en el
'rule' llamo a la función que valida dicha condición (incluso le mando un argumento):
Código PHP:
'rule' => array('dependeP4','p5'),
Abajo del $validate ya puedo declara la función que podría ser algo asi:
Código PHP:
function dependeP4($data, $pregunta){
$valida = true;
if( $this->data['Encuesta']['p4'] == 'p4_r1' ){
if( $data[$pregunta] == '' ){ $valida = false; }
}
return $valida;
} // dependep4
Si te fijas estoy validando la pregunta 5 a partir de la respuesta de p4 y regreso true o false que sería el resultado de la validación.
Espero que te sirva.
Saludos