Ben CI kullanarak benim yaklaşımı paylaşmak olacak
- 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.
- 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.
- 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 ;)