【问题标题】:How to map Zend_Db_Table_Row object to Zend_Form_Element_Select options (optial way)如何将 Zend_Db_Table_Row 对象映射到 Zend_Form_Element_Select 选项(可选方式)
【发布时间】:2012-03-22 22:02:57
【问题描述】:

您将如何使用直接来自 Zend_Db_Table_Row 的选项填充 Zend_Form_Element_Select?

例如:

    $select = new Zend_Form_Element_Select('user_id', array(
        'required'  => true
        ));

    // fetching users for select
    $userTable = new User_Model_DbTable_User();
    $users = $userTable->fetchAll();
    $select->addMultiOptions($users->toArray());

但这不会很好。假设我想将对象 id 作为选项值,将一些对象属性作为选择标签。

我知道我可以通过行集运行 foreach 并构造一个选项数组,但也许有某种映射函数?

【问题讨论】:

    标签: php zend-framework zend-form zend-db


    【解决方案1】:

    您创建的任何 map 函数都将迭代行集,因此您不妨简单地这样做,例如

    foreach ($users as $user) {
        $select->addMultiOption($user->id, $user->someObjectProperty);
    }
    

    【讨论】:

      【解决方案2】:

      您也可以考虑定制模型方法以准确返回您想要使用的数组。 可能类似于:

      public function fetchSelectList() {
              $resultSet = $this->fetchAll();
              $entries = array();
              foreach ($resultSet as $row) {
                  $entry['id'] = $row->id;
                  $entry['name'] = $row->name;
      
                  $entries[] = $entry;
              }
              return $entries;
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-10
        • 1970-01-01
        相关资源
        最近更新 更多