I know this question was asked some time ago, but I had the same problem.
When you use GET, CakeRequest will not populate the CakeRequest::data property. The form helper typically uses this property to populate input values. Therefore, you must first populate this property with your GET data somewhere in your controller. For instance:
$this->request->data = $this->request->query;
Your next problem is that Form Helper ignores the model set for your form if you use GET. Unfortunately, this behavior is not documented, but this is mentioned:
You can also pass false for $model . This will put your form data in an array: $this->request->data (and not in the sub-array: $this->request->data['Model'] ). This can be convenient for short forms that may not represent anything in your database.
Therefore, when creating a search form, you will need to set the model to false . eg:
echo $this->Form->create(false, array('type' => 'get'));
source share