2010-03-09 52 views
2

我目前正在开发一个项目,其中使用Zepel框架和Propel。针对Propel对象的Zend_Form创建

我要找的东西,会为行走对象创建Zend_Forms,最好以类似的方式来Django的modelforms

有什么在那里,已经这样做了,如果没有,什么是最好的怎么去创造这样的东西?

回答

1

我的一个同事提供了以下为“起点”

<?php 
class TestController extends Zend_Controller_Action 
{ 
    public function indexAction() 
    { 
     $product_table = ProductPeer::getTableMap(); 
     $product_columns = $product_table->getColumns(); 

     $elements = array(); 

     foreach($product_columns as $col_name => $col_data) 
     { 
      $col_name = ucwords(str_replace('_', ' ', strtolower($col_name))); 

      switch($col_data->getType()) 
      { 
      case 'TINYINT': 
       $element = new Zend_Form_Element_Text(
        $col_name, 
        array(
         'label' => $col_name 
        ) 
       ); 
       break; 
      case 'SMALLINT': 
       $element = new Zend_Form_Element_Text(
        $col_name, 
        array(
         'label' => $col_name 
        ) 
       ); 
       break; 
      case 'INTEGER': 
       $element = new Zend_Form_Element_Text(
        $col_name, 
        array(
         'label' => $col_name 
        ) 
       ); 
       break; 
      case 'FLOAT': 
       $element = new Zend_Form_Element_Text(
        $col_name, 
        array(
         'label' => $col_name 
        ) 
       ); 
       break; 
      case 'DOUBLE': 
       $element = new Zend_Form_Element_Text(
        $col_name, 
        array(
         'label' => $col_name 
        ) 
       ); 
       break; 
      case 'VARCHAR': 
       $element = new Zend_Form_Element_Text(
        $col_name, 
        array(
         'label' => $col_name 
        ) 
       ); 
       break; 
      case 'DECIMAL': 
       $element = new Zend_Form_Element_Text(
        $col_name, 
        array(
         'label' => $col_name 
        ) 
       ); 
       break; 
      case 'LONGVARCHAR': 
       $element = new Zend_Form_Element_Text(
        $col_name, 
        array(
         'label' => $col_name 
        ) 
       ); 
       break; 
      case 'DATE': 
       $element = new Zend_Form_Element_Text(
        $col_name, 
        array(
         'label' => $col_name 
        ) 
       ); 
       break; 
      case 'TIMESTAMP': 
       $element = new Zend_Form_Element_Text(
        $col_name, 
        array(
         'label' => $col_name 
        ) 
       ); 
       break; 
      default: 
       die("Unknown colum type: " . $col_data->getType()); 
      } 

      $elements[] = $element; 
      echo $element; 
     } 

     die("END"); 
    } 
}