Zend Dojo Filtering выбирает возврат только одного значения

#zend-framework #dojo

#zend-framework #dojo

Вопрос:

Привет, кто-нибудь может, пожалуйста, сказать мне, почему следующий код возвращает только одно значение 2, bath

Действие автозаполнения с моего контроллера

   public function groomappointserviceAction()
   {

    $this->_helper->layout->disableLayout();
    $this->getHelper('viewRenderer')->setNoRender(true);

    // get a list of all grooming services IDs and related procedures
   $gqry= Doctrine_Query::create()
   ->select('g.groomServicesID AS iden , p.groomprocedure AS name')
   ->from('PetManager_Model_Groomservices g')
   ->leftJoin('g.PetManager_Model_Groomprocedures p');
   $result = $gqry->fetchArray();

   //generate and return JSON string 
    $data = new Zend_Dojo_Data('iden',$result);
    echo $data->toJson();
  }
  

filteringselect моей формы

   // Create a autocomplete select input for the grooming
    $gservice = new Zend_Dojo_Form_Element_FilteringSelect('gapmtService');
    $gservice->setLabel('Proceedure');
            $gservice->setOptions(array(
            'autocomplete' => true,
            'storeID'   => 'groomappointserviceStore',
            'storeType' => 'dojo.data.ItemFileReadStore',
            'storeParams' => array('url' => "/groomappointments/appointment/groomappointservice"),
      'dijitParams' => array('searchAttr' => 'name')))
        ->setRequired(true)
        ->addValidator('NotEmpty', true)
        ->addFilter('HTMLEntities')            
        ->addFilter('StringToLower')        
        ->addFilter('StringTrim');
  

Когда тот же (я полагаю) запрос в MySQL возвращает

 mysql> select g.groomservicesid AS iden , p.groomprocedure as name
     -> from groomservices AS g LEFT JOIN groomProcedures AS p
     -> on g.groomProcedure = p.groomProceduresID;
  ------ -------------------------- 
 | iden | name                     |
  ------ -------------------------- 
 |    2 | Bath                     |
 |    7 | Bath                     |
 |    8 | Bath                     |
 |    9 | Bath                     |
 |    1 | Nail Clip                |
 |    4 | Nail Clip                |
 |    5 | Nail Clip                |
 |    6 | Nail Clip                |
 |   19 | Shed Less                |
 |   20 | Shed Less                |
 |   21 | Shed Less                |
 |   22 | Shed Less                |
 |   13 | Dematting/Hand Stripping |
 |   14 | Dematting/Hand Stripping |
 |   15 | Dematting/Hand Stripping |
 |   16 | Dematting/Hand Stripping |
 |   17 | Dematting/Hand Stripping |
 |   18 | Dematting/Hand Stripping |
 |    3 | Bath Brush               |
 |   10 | Bath Brush               |
 |   11 | Bath Brush               |
 |   12 | Bath Brush               |
  ------ -------------------------- 
 22 rows in set (0.00 sec)
  

Комментарии:

1. У кого-нибудь есть идея, где я облажался?

Ответ №1:

Хорошо, я фактически отсортировал это, изменив код на приведенный ниже. Не уверен, почему это сейчас работает, поскольку я пробовал это ранее, но это не сработало.

Мое действие автозаполнения

 public function groomappointserviceAction()
{

    $this->_helper->layout->disableLayout();
    $this->getHelper('viewRenderer')->setNoRender(true);

   // get a list of all grooming services IDs and related procedures
   $gqry= Doctrine_Query::create()
       ->select('g.groomServicesID, p.groomprocedure AS name')
       ->from('PetManager_Model_Groomservices g')
      ->leftJoin('g.PetManager_Model_Groomprocedures');
   $result = $gqry->fetchArray();

  //generate and return JSON string 
  $data = new Zend_Dojo_Data('groomServicesID',$result);
  echo $data->toJson();
}
  

Выбор FilteringSelect в моей форме

   // Create a autocomplete select input for the grooming
    $gservice = new Zend_Dojo_Form_Element_FilteringSelect('gapmtService');
    $gservice->setLabel('Proceedure');
    $gservice->setOptions(array(
      'autocomplete' => true,
      'storeID'   => 'groomappointserviceStore',
      'storeType' => 'dojo.data.ItemFileReadStore',
      'storeParams' => array('url' => "/groomappointments/appointment/groomappointservice"),
      'dijitParams' => array('searchAttr' => 'name')))
        ->setRequired(true)
        ->addValidator('NotEmpty', true)
        ->addFilter('HTMLEntities')            
        ->addFilter('StringToLower')        
        ->addFilter('StringTrim');