Ben tercih ederim ve ben daha kolay yönetebilmek için birkaç ayrık fonksiyonları çağırmak için refactor istiyorum daha uzun büyüdü benim denetleyicisi bir işlevi var. Nasıl daha iyi bir Codeigniter denetleyicisi uzun bir işlevi organize edebilir?
What I've tried:
Ben bir lider çizgi (_myfunc) ile onları adlandırma bir denetleyicisi özel işlevler oluşturmak biliyorum, ama sonra işlevi değişkenler çağıran denetleyici fonksiyonunun kapsamı dışındadır. Yani bir güçlük işlevi tüm gerekli verileri geri dönmek zorunda.
Bu karmaşık bir denetleyici işlevi yönetmek için en iyi seçenek mi? Değişkenler tüm standart sınıf üye değişkeni gibi denetleyici sınıfına küresel olabileceğini daha kolay bir yolu var mı?
Önerileriniz? Şimdiden teşekkürler!
EDIT: Birisi bu yüzden aşağıdaki dev denetleyici için kod eklendi kodunu istedi. Iyileştirilmesi için bir fırsat (, vb önizleme, sipariş, silme) ayrı işlevleri switch ifadeleri mantık hareket etmektir. Ama bundan sonra bir sonraki adıma karar çalışıyorum. O kendi işlevi büyük doğrulama kurulum kodunu hareket gerçekten biraz kilo almak istiyorum, ama nereye hareket etmelidir?
function categories() {
$this->load->library('upload');
$this->load->model('categories_m');
$this->load->model('products_m');
$this->load->model('pages_m');
$this->load->model('backoffice/backofficecategories_m');
$data['body'] = $this->load->view('backoffice/categories/navigation_v', '', TRUE);
$data['cat_tree'] = $this->categories_m->getCategoryTree();
$data['page_list'] = $this->pages_m->getPageList();
$data['category_dropdown'] = $this->load->view('backoffice/categories/category_dropdown_v',$data,TRUE);
switch ($this->uri->segment(3)) { //display views based on parameter in URL.
case 'delete':
$categoryTreeID = $this->sitewide_m->checkURLParam($this->uri->segment(4),'CategoryTree'); //if parameter is in URL, show 404 if invalid parameter is passed. Otherwise, set variable known to be safe.
if (isset($_POST['delete'])) {
$this->backofficecategories_m->deleteCategory($categoryTreeID);
$data['body'] .= '<span class="error">Category Deleted.</span>';
} else {
$data['cat_details'] = $this->categories_m->getCategoryDetails('',$categoryTreeID);
$data['parent_category'] = $this->categories_m->getParentCategory($categoryTreeID);
$data['products_to_reassign'] = $this->products_m->getProductsInCategory('',$categoryTreeID);
$data['body'] .= $this->load->view('backoffice/categories/delete_v',$data,TRUE); //pull fresh category tree data since tree was just updated.
}
break;
case 'preview':
if ($this->uri->segment(4)) $data['categoryTreeID'] = $this->sitewide_m->checkURLParam($this->uri->segment(4),'CategoryTree'); //if parameter is in URL, show 404 if invalid parameter is passed. Otherwise, set variable known to be safe.
$data['cat_details'] = $this->categories_m->getCategoryDetails(NULL,$data['categoryTreeID']); //get category ID being edited from the URL and store it. Returns false if category ID isn't found.
foreach ($data['cat_details']->result() as $detail) {
$data['categoryName'] = $detail->Name;
$data['categoryID'] = $detail->ID;
}
$data['body'] .= $this->load->view('backoffice/categories/preview_v', $data, TRUE);
break;
...cases continue...
default:
$this->load->library('table');
$data['body'] .= $this->load->view('backoffice/categories/categories_v', $data, TRUE);
break;
}
$this->load->view('backoffice/template_v',$data);
}