Tag: symfony

学说Symfony应用程序中的实体和业务逻辑

任何想法/反馈都欢迎:) 我碰到了一个问题,就是如何在Symfony2应用程序中 处理我的Doctrine2实体的 业务逻辑 。 (对不起,发文长度) 阅读了很多博客,食谱和其他资源后,我发现: 实体可能仅用于数据映射持久性(“贫血模型”), 控制者必须是更加苗条的可能性, 域模型必须从持久层(实体不知道实体pipe理器) 好吧,我完全同意它,但是: 在域模型中处理复杂商业规则的地方和方式? 一个简单的例子 我们的域名模式: 一个组可以使用angular色 angular色可以由不同的组使用 一个用户可以属于多个angular色 组 , 在SQL持久层中,我们可以将这些关系build模为: 我们的具体业务规则: 只有angular色连接到组时, 用户才可以在组中具有angular色 。 如果我们从组G1分离angular色R1 ,则必须删除具有组G1和angular色R1的所有UserRoleAffectation 这是一个非常简单的例子,但我想知道pipe理这些业务规则的最好方法。 find解决scheme 1-在服务层的实现 使用特定的Service类作为: class GroupRoleAffectionService { function linkRoleToGroup ($role, $group) { //… } function unlinkRoleToGroup ($role, $group) { //business logic to find all invalid UserRoleAffectation with these role […]

在Symfony 2 WebTestCase上创buildtesting数据库和加载装置的最佳方法是什么?

我有一个WebTestCase在我的应用程序中执行一些基本的路线。 我想在PHPUnit的setUp方法中创build一个和我的主数据库完全相同的testing数据库,然后在其中加载fixture。 我目前正在做一些解决方法,并执行一些控制台命令,如下所示: class FixturesWebTestCase extends WebTestCase { protected static $application; protected function setUp() { self::runCommand('doctrine:database:create'); self::runCommand('doctrine:schema:update –force'); self::runCommand('doctrine:fixtures:load –purge-with-truncate'); } protected static function runCommand($command) { $command = sprintf('%s –quiet', $command); return self::getApplication()->run(new StringInput($command)); } protected static function getApplication() { if (null === self::$application) { $client = static::createClient(); self::$application = new Application($client->getKernel()); self::$application->setAutoExit(false); } return […]

使用Symfony2 / Symfony3中的FOSUserBundle删除/用电子邮件replace用户名字段

我只想以电子邮件作为login模式,我不想拥有用户名。 symfony2 / symfony3和FOSUserbundle可以吗? 我在这里阅读http://groups.google.com/group/symfony2/browse_thread/thread/92ac92eb18b423fe 但是,然后我坚持两个违反约束。 问题是如果用户留下电子邮件地址空白,我得到两个约束违规: 请填入一个用户名 请input电子邮件 有没有一种方法来禁用validation给定的字段,或更好的方式从表单中删除一个字段?

symfony2:未能写入caching目录

我不得不使用 app/console cache:clear command 在生成实体时解决问题。 我现在无法加载我的主页: http://localhost/projet_etienne/web/app_dev.php 它说 : RuntimeException:无法写入caching文件“/var/www/projet_etienne/app/cache/dev/classes.php”。 我不太了解这个caching业务! 在我的app/cache文件夹中,我得到了一个dev ,一个dev_new ,一个dev_old文件夹。 这是正常的吗? 该 app/console cache:clear 通过这样的方式产生一个: [ErrorException]警告:重命名(/ var / www / projet_etienne / app / cache / dev,/ var / www / projet_etien ne / app / cache / dev_old):目录在/ var / www / projet_etienne / vendo中不为空 R / symfony中/ symfony中/ src目录/ […]

Symfony2无效的表单没有错误

我遇到了Symfony2生成的CRUD表单的问题。 (使用MongoDB文档,但我不认为这是相关的) 在我的控制器的createAction()方法中,当我debugging窗体结果时: $form->isValid() // returns false $form->getErrors() // returns en empty array(0) {} 所以,我没有得到任何使用form_errors(form)我的树枝模板(这似乎是正常的,因为$form->getErrors()空返回) 而书面的价值观并没有被取代 有没有人有一个想法?

如何使用symfony2原则查询生成器来select不同的查询?

我有这个symfony代码,其中检索与我的项目上的博客部分相关的所有类别: $category = $catrep->createQueryBuilder('cc') ->Where('cc.contenttype = :type') ->setParameter('type', 'blogarticle') ->getQuery(); $categories = $category->getResult(); 这工作,但查询包括重复: Test Content Business Test Content 我想在我的查询中使用DISTINCT命令。 我见过的唯一示例要求我写入原始SQL。 我想尽可能避免这种情况,因为我试图保持所有的代码都一样,所以他们都使用Symfony2 / Doctrine提供的QueryBuilder特性。 我尝试添加distinct()到我的查询是这样的: $category = $catrep->createQueryBuilder('cc') ->Where('cc.contenttype = :type') ->setParameter('type', 'blogarticle') ->distinct('cc.categoryid') ->getQuery(); $categories = $category->getResult(); 但是会导致以下错误: 致命错误:调用未定义的方法Doctrine \ ORM \ QueryBuilder :: distinct() 我如何告诉symfonyselect不同的?

Symfony2更新bootstrap.php.cache

最近我从Symfony.com上的BETA版本开始了Symfony2的一个项目 过了一段时间,我需要升级到master分支,所以我从github中获取最新的信息,并将其切换到vendor / symfony。 但是,我的bootstrap.php.cache和bootstrap_cache.php.cache没有升级,这已经产生了错误。 我尝试清除symfonycaching,无济于事。 我如何更新这些文件以符合我的项目?

如何在Symfony布局中获取_localevariables?

我在一个拥有2种语言的站点上使用Symfony 2,我想根据用户语言环境语言来改变路由模式! 例: user_login_en: pattern: /en/user/login.html defaults: { _controller: SfErrorsAppBundle:User:login, _locale: en } user_login_fr: pattern: /fr/utilisateur/connexion.html defaults: { _controller: SfErrorsAppBundle:User:login, _locale: fr} 在模板里面,这并不难,我只需要将$ this-> get('session') – > getLocale()从控制器传递给模板。 为了工作,我必须打电话给我的路线: $router->generate('user_login_'.$locale, array()); 但在我的布局,我当然有一个菜单,和侧链,有链接…所以我想要获取localevariables来使用它! 所以我的问题很简单:如何获得“布局”模板内的这个variables? 否则,你有任何想法改变模式取决于语言? 原因是我想为所有用户提供美丽的路线,无论他们是英语还是法语…还有一个search引擎优化的原因!

Symfony2中ObjectManager与EntityManager的区别?

在自定义表单types中使用Doctrine\Common\Persistence\ObjectManager和Doctrine\ORM\EntityManager什么区别? 我可以使用$this->em->getRepository()和$this->om->getRepository()来获取respository。 class MyFormType extends \Symfony\Component\Form\AbstractType { /** * @var Doctrine\ORM\EntityManager */ protected $em; public function __construct(Doctrine\ORM\EntityManager $em) { $this->em = $em; } } 代替: class MyFormType extends \Symfony\Component\Form\AbstractType { /** * @var Doctrine\Common\Persistence\ObjectManager */ protected $om; public function __construct(Doctrine\Common\Persistence\ObjectManager $om) { $this->om = $om; } }

Symfony2慢速初始化时间

我已经在Ubuntu Server 12.04(64位)VM(VirtualBox)上运行Symfony2。 主机是一台MacBook Pro。 出于某种原因,我在开发模式(app_dev.php)中获得了非常长的请求时间。 我知道它在开发模式下比较慢,但是我每个请求说话5-7秒(有时甚至更慢)。 在我的Mac上,我在开发模式下获得200ms左右的请求时间。 在Symfony2分析器中查看我的时间线后,我注意到约95%的请求时间是“初始化时间”。 这是什么? 有什么原因可能会这么慢? 此问题仅适用于开发模式下的Symfony2,而不适用于虚拟机上运行的其他任何站点,甚至不适用于生产模式下的Symfony2。 我看到这个(但是它似乎不回答我的问题。