包括symfony2 ansd中模块(捆绑包)中的管理部分,从其他模块和模板调用它们

包括symfony2 ansd中模块(捆绑包)中的管理部分,从其他模块和模板调用它们,symfony,Symfony,在CodeIgniter中,我使用的是HMVC扩展,我的模块可以采用以下结构: modules/ admin_auth admin_core admin_menu admin_templates flashnews flashnews_latest footer gallery pages/ control

在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
这允许我将管理部分包含到我的模块中,并将其调用到管理核心和管理菜单模块

这里用更多的细节(最后一种方法)解释:

http://philsturgeon.co.uk/blog/2009/07/Create-an-Admin-panel-with-CodeIgniter

类似的事情可以在Symfony2中完成吗?如果是的话,我可以在哪里找到一些关于如何实现类似结构的教程,因此模块中包含了管理部分(控制器和视图)。我在找,但没有找到类似的东西


有没有哪本书详细介绍了这一点,即如何使用包含amdin部分的模块创建管理员?

我认为您误解了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
整个
项目
目录就是您的应用程序
如果需要,它可以包含许多不同的网站,也可以只是一个网站

您的应用程序逻辑(本例中的网站)应位于
src
文件夹中,作为
捆绑包
委托
您可以阅读更多关于或

前端逻辑 因此,在本例中,您可能有一个
FrontBundle
,其中包含前端逻辑,如下所示

project/
    src/
        Acme/
            FrontBundle/
                Controller/
                    IndexController.php
                Resources/
                    views/
                        Index/
                            pages.html.twig
                        layout.html.twig
Acme\FrontBundle\Controller\IndexController

服务 这是您想要添加某些组件的逻辑类。

实体

控制器 Acme\AdminBundle\Controller\PagesController


创建一个bundle就可以了。也许你可以在你提供的链接上开始或阅读关于@Touki的内容,这里没有关于管理面板的内容。阅读Phil Sturgeon的文章来更好地了解我想要做什么吗?只需将您的管理服务、视图、控制器或任何功能打包到您自己的
AdminBundle
。或者你可以使用一个现成的捆绑包,比如@Touki,我想这不是一个解决方案。我希望我的所有管理资料,属于该模块有在这个模块,而不是在另一个模块。也许我只是不理解你的方法。你能给我一些示例教程吗?他们正在创建一个具有管理功能的捆绑包,并且所有内容都在同一个budle中,例如PagesBudle?好吧,我会试试;)。这并不完全是我想要的,但我会看看Symfony CMF
<?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);
    }
}
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/
<?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
    }
}