Ben, şu anda PHP CMS menü sınıf üstlenmeden, ve şu anda kimse (biz ana, altbilgi sahip menü başlığında ileterek (bir menü oluşturmak için çalışır sorunu işlemek için en iyi şekilde çalışmak için çalışıyorum programı vb menüler), ancak menü veritabanında değil.
Onlar o zaman sorun yok bulunabilir bir menü ile bir menü nesnesi oluşturmak için çalışırsanız istendiği gibi, ben nesneyi dönebilirsiniz. Onlar olsa bulunmazsa bir tane oluşturmak için çalışırsanız, ben şu anda daha sonra boş bir menü nesnesi yaratmak ve o dönen, (gönderilecek bir e-posta neden) bir istisna atıyorum. Çıkış menü için çağrı sonra hatasız çalışır, ama hiçbir şey çıktılar.
(Ben bu yüzden menü sınıf statik bir yöntem daha sonra gerekirse bir özel durum atma işlemek ve istenen menü nesnesini, ya da boş bir ya dönebilirsiniz hangi bir menü nesnesi oluşturmak için denir onu kurarak yukarıda yaptık).
Umarım tüm bu mantıklı! Bu almak için en iyi yöntem midir? Ya da daha zarif bir çözüm var mı?
Chris
Edit:
Burada bir menü oluşturmak için denir statik fonksiyon bulunuyor:
static function makeMenu($id,$breakDepth=1){
// try to create Menu
try {
$menu = new Menu($id, $breakDepth);
}
catch (no_menu_found_exception $e) {
// if we failed to find it, an email should have been sent, and create a blank menu so rest of site works without error
$menu = new Menu("");
}
return $menu;
}
ve burada yapıcı bulunuyor:
function __construct($id,$breakDepth=1){
$this->treeObject = Doctrine_Core::getTable('CmsMenuItemNew')->getTree();
if ($id == "") {
// if ID supplied is empty, return an empty menu object
$this->rootNode = null;
$this->name = $id;
return;
}
if (is_numeric($id)) {
// check it exists?
$this->rootNode = $id;
$node = Doctrine_Core::getTable('CmsMenuItemNew')->findByDQL("menuid = '".$id."'")->getFirst();
$this->name = $node->menutitle;
if ($this->name == "") $this->rootNode = null;
return;
} else {
$this->name = $id;
// find the menu ID for the supplied name
$table = Doctrine_Core::getTable('CmsMenuItemNew');
$table->setOption("orderBy", "level");
$this->rootNode = $table->findByDQL("menutitle = '$id'")->getFirst()->menuid;
// rootNode with supplied name not found, so look for a branch in the main menu
$this->breakDepth = $breakDepth;
if ($this->rootNode === null) {
throw new no_menu_found_exception("Menu not found: ".$id);
}
}
}
belirtildiği gibi - hala onun gelişiminde, bu yüzden tamamen bitmedi.