Я разрабатываю сайт с использованием CodeIgniter и стараюсь придерживаться парадигмы «Модель жира/Skinny Controller», но я сталкиваюсь с некоторыми проблемами, когда речь идет о страницах, содержащих формы с количество входов. Приведенный ниже код является то, что я использую, чтобы определить входы для адресных полейCodeIgniter: Структура контроллера для форм со многими входами
Часть моего контроллера (где я задающей форму входа и их атрибуты):
$this->data['address1'] = array(
'name' => 'address1',
'id' => 'address1',
'type' => 'text',
'class' => 'field text addr',
'tabindex' => '10',
'value' => $this->form_validation->set_value('address1'),
'placeholder' => 'Street Address'
);
$this->data['address2'] = array(
'name' => 'address2',
'id' => 'address2',
'type' => 'text',
'class' => 'field text addr',
'tabindex' => '11',
'value' => $this->form_validation->set_value('address2'),
'placeholder' => 'Address Line 2',
);
$this->data['city'] = array(
'name' => 'city',
'id' => 'city',
'type' => 'text',
'class' => 'field text addr',
'tabindex' => '12',
'value' => $this->form_validation->set_value('city'),
'placeholder' => 'City'
);
$this->data['state'] = array(
'name' => 'state',
'id' => 'state',
'class' => 'field addr',
'tabindex' => '13',
'value' => $this->form_validation->set_value('state'),
'label' => array('class' => 'desc')
);
$this->data['zip'] = array(
'name' => 'zip',
'id' => 'zip',
'type' => 'text',
'class' => 'field text addr',
'tabindex' => '14',
'maxlength' => '20',
'value' => $this->form_validation->set_value('zip'),
'placeholder' => 'Zip/Postal Code'
);
$this->data['country'] = array(
'name' => 'country',
'id' => 'country',
'class' => 'field addr',
'tabindex' => '15',
'value' => $this->form_validation->set_value('country')
);
Часть моего просмотра (минус все HTML, чтобы поместить форму входа):
<?php
echo form_open("address/add");
echo form_input($address1);
echo form_input($address2);
echo form_input($city);
$options = array();
$options[''] = 'State/Province/Region';
foreach($province_options AS $prov)
{
$options[$prov->id] = $prov->province;
}
echo form_dropdown('state',$options,'',$state);
echo form_input($zip);
$options = array();
$options[''] = 'Country';
foreach($country_options AS $cnt)
{
$options[$cnt->id] = $cnt->country;
}
echo form_dropdown('country',$options,'',$country);
echo form_submit('submit', 'Submit & Continue');
echo form_close();
?>
Я чувствую, что мой контроллер чрезмерно многословный, но я не могу думать о том, что альтернатива была бы для того, как организовать информацию, необходимую для представления моего если я планирую использовать Помощник формы для создания м входов на мой взгляд. Правильно ли это, что делать, или есть лучший подход?
+1 для необработанного HTML (я только что опубликовал аналогичный ответ 30 минут назад, пока обед не прервал меня), но я не вижу, что «глупо» о блоке кода, который вы опубликовали. Вы можете объяснить? –
@MadM Чтобы ответить на ваш вопрос, я лично не вижу смысла при типизации var, а затем заполняя его значениями, это может быть нормально внутри класса, однако это массив tmp внутри метода (BTW спасибо PHP6 или 5.4 whatevers) , подход может звучать, но для удобства чтения я думаю, что это неправильно. – Philip
Ну, без * second * '$ options = array();' значения из первого будут просачиваться (возможно, должно использоваться другое имя var). Я понимаю ваш смысл, но я по-прежнему считаю, что это хорошая практика, и дает понять, что происходит, чтобы избежать «несчастных случаев». –