在CodeIgniter中我使用HMVC扩展,我可以为我的模块使用这种结构:
modules/
admin_auth
admin_core
admin_menu
admin_templates
flashnews
flashnews_latest
footer
gallery
pages/
controllers/
admin.php
pages.php
models/
mdl_pages.php
views/
admin/
page_add.php
page_list.php
pages_front_list.php
posts
posts_latest
templates
videos
允许我将管理部分包含到我的模块中,并将其命名为admin_core和admin_menu模块。
这里有更多的deatils(最后一种方法)解释:
http://philsturgeon.co.uk/blog/2009/07/Create-an-Admin-panel-with-CodeIgniter
这样的事情可以在Symfony2中完成,如果是的话,我可以找到一些教程如何获得类似的结构,所以模块包括管理部分(控制器和视图)。我正在寻找,但我找不到那样的东西。
是否有任何书籍谈论这个问题,如何使用包含amdin部分的模块创建管理员?
答案 0 :(得分:0)
我认为您误解了Symfony2为您提供的服务。我会尝试为你的用例解释一些。
您想在自己的网站上创建管理面板。这是一个常见的案例。
您应该为整个内容创建一个包。与AdminBundle
让我们看一下Symfony2目录结构。这是一段摘录。
project/
app/
config/
config.yml
parameters.yml
cache/
AppKernel.php
src/
Acme/
DemoBundle/
Controller/
Resources/
config/
public/
views/
AcmeDemoBundle.php
vendor/
symfony/
autoload.php
web/
.htaccess
app.php
app_dev.php
整个project
目录是应用
如果需要,它可以包含许多不同的网站,也可以只包含一个。
您的应用程序逻辑(本例中的网站)应位于src
文件夹中,委派为Bundle
的
您可以详细了解what is a bundle或should everything be a bundle
所以,在你的情况下,你可能有FrontBundle
包含前端逻辑,就像这样
project/
src/
Acme/
FrontBundle/
Controller/
IndexController.php
Resources/
views/
Index/
pages.html.twig
layout.html.twig
的的Acme \ FrontBundle \控制器\的IndexController 强>
<?php
namespace Acme\FrontBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
class IndexController extends Controller
{
/**
* @Route("/pages")
* @Template
*/
public function pagesAction()
{
$em = $this->getDoctrine()->getManager();
// Note that we fetch from AdminBundle
$pages = $em->getRepository('AcmeAdminBundle:Page')->findAll();
return array('pages' => $pages);
}
}
此控制器在http://example.com/pages
上匹配
这将获取AdminBundle实体的页面。
现在您需要一个管理面板,您可以创建另一个仅包含此逻辑的包 该捆绑包有自己的控制器和视图,可供整个应用程序使用
project/
src/
Acme/
FrontBundle/
AdminBundle/
Controller/
PagesController.php
Entity/
Page.php
Resources/
views/
Pages/
add.html.twig
edit.html.twig
layout.html.twig
Services/
AdminAuth/
AdminCore/
这是您要添加部分组件的逻辑类 Read more about Services
的的Acme \ AdminBundle \控制器\ PagesController 强>
<?php
namespace Acme\AdminBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
/**
* @Route("/admin/pages")
*/
class PagesController extends Controller
{
/**
* @Route("/edit")
* @Template
*/
public function editAction()
{
// Edit
}
/**
* @Route("/add")
*/
public function addAction()
{
// Add
}
}
编辑操作将匹配http://example.com/admin/pages/edit
添加操作将匹配http://example.com/admin/pages/add
/admin
路线