En iyi yapıyı almak için Kontrolörleri düzenlemek için nasıl (MVC)

3 Cevap php

Nedir denetleyicileri düzenlemek için en iyi yoldur. Ben, bir kullanıcı denetleyicisi ve bir kayıt eylem var ben doğrulamak ve verileri işlemek nerede ben de bir process_registration eylem olmalı, ya da sadece kayıt eylemin kendisi içinde tüm işlem yapmak diyelim. Ben (process_registration .. vb kayıt) gerektiriyorsa her eylem için bir doğrulama / işleme eylemi olmalıdır

Ben de bir sürü insan sadece bilgi doğrulama ve işleme modülleri ve denetleyicileri var olduğunu fark (Ben belki bir noktada tüm doğrulama mantığını ve kurallarını tutmak için sanırım?)

Benim soru ayrı şeyler ayrılmış olması gerekiyor ne kadar, sanırım? Bu soru olarak Şey Modelleri ve Views için gider.

3 Cevap

Genellikle doğrulama model olması gerektiğini; Bu MVC paradigmasının noktası türüdür. Denetleyicinin devre eylemleri arasındaki etrafında kullanıcı zıplatma hakkında views sunum için sadece destek ve iş mantığı modellerinde oturur.

Bazı çerçeveler (CodeIgniter) 'hiçbir mantığı yok modeller düz nesneler yaparak MVC niyet çılgınca sapmak (doğrulama veya başka türlü) bağlı, kontrolör tabakası içine doğrulama mantığını hareket gerektiren, ama bu noktada "model" aren t gerçekten tüm modeller, ama övmek diziler.

Bildiğim kadarıyla "process_register" "kayıt" ve iki eylemler sahip olarak, I bulmak o isteğinde ve almak için farklı yanıt bir eylem var, çok temiz. Ben RESTful şeyleri tutmak için "yaratmak" Bu eylemi diyoruz, ve çerçeve whereever tanımlanan bir rota o "/ user / yaratmak" için "/ register" haritasına yolları bulunuyor tanımlar olurdu

Örnek pseudo-php:

<?php

class User_controller {
  // [GET|POST] /users/create
  function create() {
    $user = new User();
    $error = '';

    if (postback) {
      // form has been submitted.
      $user->name = $_POST['name'];
      $user->password = $_POST['pasword'];

      if (validate_user($user)) {
        $user->save();
        redirect("user/show/$user->id");
      }
      // user save failed, fall through to displaying the new user form
      // the user's name and password (and other fields) are now populated,
      // and will display
      $error = 'Account creation failed.';
    }

    // Render the view with the user and the error message (if any)
    render('views/users/create', $user, $error);
  }
}

?>

Benim duygu bu model doğrulama ve 'işleme' tutmak en iyisidir olduğunu. Sadece bir model işlevi isteği haritalama yönetmek için Kontrolörü kullanın.

This section adlı "Zend Framework: Deep End Surviving" iyi bir okuma olabilir.

Ben senin soruya dayanarak verebileceğiniz en iyi tavsiye size sitenizi modularize istediğiniz derecede bir kontrol içinde eylemlerini kırmak isteyecektir olduğunu varsayalım. Ayrıca sürekli olarak başka bir eylemden hareket ediyorsanız eylemler benzersiz URL'ler ile ilişkili olmak zorunda, çünkü maliyetler, işleme ve SEO hem de orada olduğunu akılda tutmak gerekir.

Here's one use case where you would want to separate registration from the register action: You want to be able to register a user via AJAX in various places across the site. With a different action for going to the registration page and processing the registration data, you'll most likely be able to reuse the actions for both a registration page as well as a registration lightbox or quick-registration drawer on any page.

Eğer sadece statik bir kayıt sayfası olan planlıyorsanız eğer kayıt işleme ve kayıt sayfasını bölme rahatsız etmek istemem bir durumdur. Bu şekilde, kontrol ve form verilerini alıyorsanız eğer görmek ve bir eylem biçimi görüntüleme ve işleme hem de yapabilirsiniz.