Codeigniter uygulama tasarımı

2 Cevap php

Ben CI uygulama tasarımı ile ilgili birkaç soru var.

S. yeni bir form ve (ben denetleyicisi dizileri oluşturma ve görünümü / form_input bunu geçiyorum CI form_helper kullanarak) yöntemini oluştururken. Ben denetleyicisi, görünüm veya ayrı bir dosyada bu yapıyor olmalıdır?

Benim denetleyicisi Q., ​​ben (yani,) (,) (düzenleme) eklemek benim form * yani, new_user (bir yöntem oluşturmak * ve benim görüşüme / (Form_Open) Ben eylemi işlemek için benim denetleyicisi farklı bir yöntem belirtmek ,)) .. vb (sil & bu yöntem doğrulama işler. Bu benim perfer yoludur; Ancak, ben zorluk doğrulama başarısız etrafında veri geçişini çok yaşadım. Herhangi bir öneriniz?

S. Ben bir örneğini ben form doğrulama gerçekleştirmek zaman ben iki $ _POST değişkenlere karşı doğrulamak için gereken ya da iki tane var. Bir örnek doğrulama ben girilen iş zaten (kapalı tabanlı iş adı ve posta kodu) sonra tekrar görünümüne yönlendirmek ve sonrası değişkenleri devam olup olmadığını belirlemek için veritabanını sorgulamak gerekir olacaktır. Şimdiye kadar sadece tek bir parametre geçebilir, çünkü bunu yapmak için özel bir geri çağırma işlevi oluşturmak için bir yol bulmak mümkün olmamıştır. Ben iş için bu almak mümkün oldum tek yolu doğrulama geçerse, o zaman veritabanı denetimi gerçekleştirmek ve iş varsa ben oturum / flashdata de $ _POST koymak ve tekrar görünümü yüklemek için yönlendirmek kullanmaktır. Form_input tanımlayan dizi bu dizide her kayıt için flashdata çeker nerede çağrıları set_value olduğunu bağlıyor.

$data['name'] = array(
    'name'     => 'name',
    'id'       =>  'name',
    'value'    =>   set_value('name', $this->session->flashdata('name')),
    'maxlength'   =>  '200',
    'size'     =>  '79',
    'class'    =>  'text'

Ben bu gerçekten aşağı tercihleri ​​söz konusu fark; Ancak, gerçekten ben başkalarının uygulamaları tasarımı ve nasıl bekleyebilirsiniz ne tuzaklar hakkında bazı bilgiler elde etmek isteyen kulüpler. Ben örnek uygulamalar indirdiğiniz ve kubbe arama iyi bir miktar var ama ben gerçekten çok tartışma bulamadı. Herhangi bir öneri büyük takdir edilmektedir.

Teşekkür ederiz!

2 Cevap

Ben CI kullanarak benim yaklaşımı paylaşmak olacak

  1. Ben mümkün olduğunca ince Denetleyicisi oluşturun. Kontrolör asıl işi sadece URI, _GET ile parametre almak ve _POST olacaktır. Sonra kontrolör modelleri için gerekli parametre geçirmek ve sonuç alırsınız. Bundan sonra, görünüm dosyası yüklenecek ve görünüm tarafından gerekli tüm değişkenler geçilecek.
  2. Veritabanı ile ilgili tüm süreç mantığı, e-posta vb gönderme, modelde ele alınır. Model gerekirse sorgu, işlem sorgu sonucu yapılacak, daha sonra bir dizi, resultset, boolean, ya da tamsayı dönmek, parametre alacak. Döndürülen değer, yeniden işleme olmadan, görünüme doğrudan geçmek olsun Kontrolör.
  3. Görünümünde, onu görüntüleme için değişken işleyecek. Görünümünde gerekli tüm alan Modeli sorgu tarafından sağlanmalıdır, çünkü dizideki sütun alanını daha sonra almak form varsayılan değer, genellikle, çift geliştirilen vb Görünümü ve model olarak göstermek, veri listesini görüntülemek için döngü olacaktır .

Controller sadece 'şişman' işlem form_validation olduğunu. Benim form_validation kurallarını yazdı ve nasıl nasıl kullanılacağını, diğer soru cevap var.

Aşağıda yukarıdaki soruya benim cevaplar:

Q. When creating a new form and your using CI's form_helper I'm creating arrays in the controller and passing it to the view/form_input() method. Should I be doing this in the controller, the view, or a separate file?

Ben nadiren form_helper kullanarak. Benim görüşüme göre en dost tasarımcısı gelen veya HTML dosyası olarak istemci tarafından sağlanan olmasıdır. Bana bir dizi gibi seçenekleri geçmesine izin çünkü ben sadece yerine do, form_dropdown kullanmak foreach. Diğer form öğesi için, sadece şablon dosyasında sunulan birini kullanın.

Q. In my controller, I create a method for my form *i.e., new_user()* and in my view/form_open() I specify a different method in my controller to handle the action (i.e., add(), edit(), delete() ..etc) & that method handles the validation. This is the way that I perfer; however, I've had a lot of difficulty passing the data around if the validation fails. Any suggestions?

Benim uygulama oluşturduğunuzda, ben genellikle sadece denetleyicisi 2 ana yöntem vardır. admin listesini görüntüleme ve silme işlemek için, ve form görüntülemek ve eklemek ve düzenlemek işlemek için. Bana bir ürün modülü ile örnek vereyim.

Ben bu yöntemlerle ürün denetleyicisi olacak:

class Product extends MY_Controller {

  function index()
  {
    //for front page, display list of product
  }

  function detail()
  {
    //for front page, display single product detail
    //product id is passed as 3rd URI segment
    $id = intval($this->uri->rsegment(3));
  }

  function admin()
  {
    //for admin, display product list
    //receive id in _POST then do delete
    //after delete, do redirect to self, best practise
  }

  function form()
  {
    //for admin, handle add and edit
    $id = intval($this->uri->rsegment(3));
    //if id given and product detail data can be loaded, then it in 'edit' mode
    //else it in 'add' mode
    //after validation success, and insert/update success, redirect to product/admin
  }

}

Bu yaklaşımı kullanarak, yinelenen kod önlemek ve her zaman güncel tüm kod koruyabilirsiniz. Hemen hemen tüm eklemek ve düzenleme görünümü ve aynı form alanı var. Durumda eklemek ve ya add veya edit için $mode değişken seti, ben {basit koyabilirsiniz var tarafından düzenleme formu, (username değiştirilmesine izin vermez, böyle bir düzenleme kullanıcı olarak) farklılık [(3)]} ve doğru formu, geçerlilik kurallarını görüntülemek ve uygun model metods diyoruz.

Q. I have an instance or two that when I perform form validation I need to validate against two $_POST variables. An example would be, on validation I need to query the database to determine if the entered business already exists (based off business name and zip code) then redirect back to the view and persist the post variables. So far I haven't been able to find a way to create a custom callback function to do this because you can only pass in one parameter. The only way that I've been able to get this to work is if validation passes, I then perform the database check and if the business exists I put the $_post in session/flashdata and use redirect to load the view again. The array that defines the form_input attributes calls set_value for that is where it pulls the flashdata for each record in the array.

You can create your own validation rules. Birden fazla parametre geçmek için, system/libraries/Form_validation.php ardından function matches($str, $field) kodunu görmek dosyayı açabilirsiniz. Geri arama 1'den fazla parametre olabilir, ve function matches($str, $field) kodu nasıl ikinci parametre okumak ve kullanmak için size gösterecektir.

Bu öğrenme ve CI kullanarak size yardımcı olacağını umuyoruz. Sizden büyük web uygulaması bekliyorum ;)

S. yeni bir form ve (ben denetleyicisi dizileri oluşturma ve görünümü / form_input bunu geçiyorum CI form_helper kullanarak) yöntemini oluştururken. Ben denetleyicisi, görünüm veya ayrı bir dosyada bu yapıyor olmalıdır?

A. Form_Helper her zaman "görünümünde" kullanmanız gerekmektedir.

Benim denetleyicisi Q., ​​ben (yani,) (,) (düzenleme) eklemek benim form * yani, new_user (bir yöntem oluşturmak * ve benim görüşüme / (Form_Open) Ben eylemi işlemek için benim denetleyicisi farklı bir yöntem belirtmek ,)) .. vb (sil & bu yöntem doğrulama işler. Bu benim perfer yoludur; Ancak, ben zorluk doğrulama başarısız etrafında veri geçişini çok yaşadım. Herhangi bir öneriniz?

, Kaydet (Ben her iki durumda else if yapmak) yöntemi; A. Benim yolu () kaydetmek için doğrudan ekleme / düzenleme () 'dir.

S. Ben bir örneğini ben form doğrulama gerçekleştirmek zaman ben iki $ _POST değişkenlere karşı doğrulamak için gereken ya da iki tane var. Bir örnek doğrulama ben girilen iş zaten (kapalı tabanlı iş adı ve posta kodu) sonra tekrar görünümüne yönlendirmek ve sonrası değişkenleri devam olup olmadığını belirlemek için veritabanını sorgulamak gerekir olacaktır. Şimdiye kadar sadece tek bir parametre geçebilir, çünkü bunu yapmak için özel bir geri çağırma işlevi oluşturmak için bir yol bulmak mümkün olmamıştır. Ben iş için bu almak mümkün oldum tek yolu doğrulama geçerse, o zaman veritabanı denetimi gerçekleştirmek ve iş varsa ben oturum / flashdata de $ _POST koymak ve tekrar görünümü yüklemek için yönlendirmek kullanmaktır. Form_input tanımlayan dizi bu dizide her kayıt için flashdata çeker nerede çağrıları set_value olduğunu bağlıyor.

A. I recommend u use $this->input->post instant of using $_POST, because CI will help u filter XSS if u enable it. PHP didn't support is_POST like .NET, what I do is use a textbox as reference

if(isset($_POST('txt_Name')))
{

}
**or**
if($this->input->post('txt_Name'))
{

}

Size yardım edebilmek benim cevap umuyoruz.