2010-03-09 62 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"); 
    } 
}