symfony 2中的结构应用


structure application in symfony 2

我正在用symfony 2.1建立一个在线商店。基本上,我有前端部分,我的网站的用户可以从那里查看,添加项目和后端部分,管理员用户可以管理整个网站。前端和后端部分将有不同的模板,但两者的数据库模型(条令)相同。

如何构建我的应用程序?

以前我使用symfony 1.4,在那里我可以创建前端应用程序和后端应用程序。Symfony 2处理捆绑包。我应该创建两个捆绑包吗?一个用于前端,一个用于后端?创建这样的结构,如何能够在它们之间共享模型。

请给我推荐一些申请的结构。

我建议您不使用捆绑包,并使用子命名空间来处理后端内容:

  • CCD_ 1-前端用户控制器
  • Vendor'Controller'Backend'UserController——后端用户控制器

模板也将以次中心为中心:

  • CCD_ 3
  • app/Resources/views/Backend/User/view.html.twig

您可以将其他模板中的次中间距模板称为:

{% include ':Backend'User:someTemplate.html.twig' %}

由于symfony2依赖于名称空间,因此可以轻松地在它们之间共享类。

假设你在FrontendBundle中定义了你的实体,它们会像:

namespace Acme'FrontendBundle'Entity;
/** @ORM annotations stuff */
class MyEntity
{
    protected $id;
    ...
}

然后,您可以通过从头开始创建来引用它们:

$newEntity = new 'Acme'FrontendBundle'Entity'MyEntity();

或通过use:导入

namespace Acme'BackendBundle'Controller;
use Acme'FrontendBundle'Entity'MyEntity;
class AdminController extends Controller
{
    public someAction()
    { 
        $newEntity = new MyEntity();
    }
}

条令储存库使用一种略有不同的符号:

$this-> getDoctrine()
    -> getEntityManager()
    -> getRepository('FrontendBundle:MyEntity')
    -> findAll();

即CCD_ 7。

请参阅symfony最佳实践以获得更好的线索!

正如前面的答案所示,没有单一的最佳方法。我发现有三捆很有用。一个包含实体以及其他共享功能的核心捆绑包,然后是位于核心捆绑包顶部的前端/后端捆绑包。但同样,没有单一的最佳方法。