我正在開發一個使用CodeIgniter的網站,我試圖堅持「胖模型/ Skinny控制器」範例,但當涉及到包含表單的頁面時遇到一些問題一些輸入。下面的代碼是我使用的定義地址字段我控制器(在那裏我定義表單輸入及其屬性)的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();
?>
我覺得我的控制器是過於冗長,但我想不出什麼樣的替代將是如何組織必要的信息,來表示我的如果我正計劃使用Form Helper來生成for在我看來m輸入。這是做事的正確方法,還是有更好的方法?
+1對於原始HTML(我剛剛在30分鐘前發佈了一個類似的答案,直到晚餐打斷了我),但我沒有看到你發佈的代碼塊的「愚蠢」。你可以解釋嗎? – 2012-03-06 00:45:41
@MadM爲了回答你的問題,我個人沒有在類型變量中看到點,然後用值填充它,這可能在類內是好的,但是這是一個方法內的tmp數組(順便說一下,感謝PHP6或5.4的發明者) ,這種做法可能是合理的,但爲了可讀性,我認爲它是錯誤的。 – Philip 2012-03-06 01:03:17
那麼,沒有* second *'$ options = array();'第一個值會溢出(可能應該使用不同的var名稱)。我理解你的意思,但我仍然認爲這是一個好習慣,並且非常清楚發生了什麼事情以避免「意外」。 – 2012-03-06 01:06:18