문제

현재 Propel과 함께 Zend 프레임 워크를 사용하는 프로젝트를 진행하고 있습니다.

나는 Propel Objects에 대한 zend_forms를 만들어 내고, 바람직하게는 Django의 modelforms와 비슷한 방식으로 무언가를 찾고 있습니다.

이미 이것을하는 일이 있습니까? 그렇지 않다면 이와 같은 것을 만드는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

내 동료 중 한 명이 다음을 "시작 장소"로 제공했습니다.

<?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");
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top