Well as it turns out I am implementing it with checkboxes since I find that a little more elegant. But I am still having problems. From the form:
$doctors = Doctor::find();
foreach($doctors as $id=>$doctor){
$this->add(new Check('original_md['.$doctor->getId().']',array($doctor->getFirstName().' '.$doctor->getLastName()=>$doctor->getId())));
}
from the controller:
$doctors = Doctor::find(array("conditions"=>"is_deleted=0","order"=>"last_name"));
$this->view->doctors = $doctors;
So that the list of doctors is available in the volt, then later down in the controller:
$md_str = implode(",",array_keys($this->request->getPost("original_md","string")));
$results = $status->getPatientsWithStudyStatus(array("conditions"=>"original_md in (:md:)",bind=>array('md'=>$md_str)));
then the volt:
{% for doctor in doctors %}
{% set id = "original_md[" ~ doctor.getId() ~ "]" %}
{{form.render(id)}} {{doctor.getValue("first_name")}} {{doctor.getValue("last_name")}}<BR>
{% endfor %}
if I check one of the original_md boxes in the volt then it works. If I check more than one of the checkboxes, it only takes the first one one even with the "in" clause. Is that a bug? If I have to I will go back to <select> but that thread you linked was not at all clear how the last post was a solution :(