PHP MVC genel bir soru

2 Cevap php

I'm building a small MVC framewrok for a specific PHP application - using Doctrine as ORM. I'd like to know what it would be the best practice to manage the frontend Menu.

Benim uygulama sitenin Yönetici (menüsü Doktrini NestedSet saklanır) tarafından düzenlenebilir 3 menüleri (yatay menü, sol menü, alt / footer menüsü) sahiptir.

Nerede çağırır ve Menü işler kodu yer almalıdır? Her denetleyici (kontrolör için kullanıcı sol menü görüntülenmesini istemiyorsanız, diyelim ki) onun ihtiyaçlarına göre, menü oluşturulmasını aramak gerekir.

Menü Modelinde bu işlevi Konumlandırılması sanırım uygunsuz olurdu ...

2 Cevap

Kontrolör Menüsü işlemek için kodu aramak ve gerekirse, Model içinde herhangi bir veritabanından veri kullanmanız gerekir. Sonra View sonuçlarını gönderir.

İşte küçük bir dökümünü

View

  • Web sayfasının içeriğini Kolları
  • Şablonlar şeklinde HTML ve PHP kombinasyonu.
  • Giriş ve sunum

Model

  • Başvurunuzun iş mantığını içerir
  • Veritabanındaki tüm verilerin ikamet nerede.

Controller

  • Girişi alır ve uygun Model adlı bir yanıt ister.

Şu anda (özellikle Symfony ama bu deseni aktarmak gerekir) benim MVC çerçevesinde çok katmanlı menüler ulaşmak ayrı bir render ayarlayarak ardışık her katman işlemek için kendisini çağıran (Symfony açısından bileşeni) içerir. Şunlar bulunmaktadır kontrol modelinden muadilden ister ve sonra görünümüne geçirir. En şunlardır görünümü döndürülen her öğeyi oluşturur ve varsa modelinde üst değeri kapalı sorgulamak için geçerli öğenin kimliği geçirerek, tüm alt öğeleri yazdırmak için tekrar dahil çağırır.

Bu görünüm özgü gibi geliyor çünkü kadar klima gibi menü ekran Ben üst düzey görünümde o bırakacaktı.

Model

Geçerli Tier en öğeleri sorgulamak için buraya Doktrini adlı findByX yöntemleri ile iyi olmalıdır. Benim şema alanı parent ben kullanmak istiyorum denir findByParent.

Include's Controller

$items = Doctrine::getTable('TopMenuItems')->findByParent( isset($parent) ? $parent : null) ) // null for initial call to grab top-tier elements, recursion should pass in new parent for children

Include's View

<?php foreach($items as $item) : ?>
  // echo HTML element for nav item
  <?php $parent = $item['parent']; include('top_menu.php'); // call nav again to print this item's children ?>
<?php endforeach; ?>

Main View

<?php if($user->wantsTopMenu()) : ?>
<?php include('top_menu.php'); ?>
<?php endif; ?>

Umut olur.