как заполнить значение в некотором элементе, используя zend_form - PullRequest
0 голосов
/ 05 апреля 2010

У меня есть несколько полей в таблице базы данных и поле с именем телефона, я сохраняю значение в этом поле, как это 111-222-5555

Теперь я хочу прочитать все свои поля и заполнить форму. Мне нравится заполнить телефон, поданный в 3 элемента (как текстовый элемент)

когда я попробую этот код

$id = $this->_request->getParam ( 'id' );
$values = $cutomModel->findCustomerById($id);// return array of row 
$frm->populate($values); 

все поля отображаются в форме, кроме поля телефона,

как я могу заполнить поле телефона до 3 элементов

спасибо

Ответы [ 2 ]

0 голосов
/ 06 апреля 2010

Если я правильно понимаю ваш вопрос, во-первых, вам нужно создать 3 отдельных поля формы (что-то вроде phone_1, phone_2 и phone_3) для хранения 3 отдельных сегментов телефона. Затем перед заполнением полей разделите вывод базы данных 1 поля на 3 поля.

$id = $this->_request->getParam ( 'id' );
$values = $cutomModel->findCustomerById($id);// return array of row 

// split phone number into 3 values
list($values['phone_1'], $values['phone_2'], $values['phone_3']) = explode('-', $values['phone'], 3);

$frm->populate($values); 

Наконец, перед вставкой ввода формы в вашу базу данных вы должны объединить ввод из 3 полей в 1 поле.

$values = $frm->getValues();

// combine phone number into 1 value
$values['phone'] = implode('-', $values['phone_1'], $values['phone_2'], $values['phone_3'])

$cutomModel->insert($values);
0 голосов
/ 05 апреля 2010

Из того, что я (едва) понял, вы пытаетесь заполнить 3 элемента формы содержимым одного поля (телефона) в таблице базы данных.

Для этого вы можете использовать метод setDefault() объекта Zend_Form. Как то так:

$frm->setDefault('field_name', $values->phone);

Сделайте это после populate() и для каждого поля, которое вы хотите заполнить пользовательским значением.

...