我一直在我的本地机器上使用Symfony 2.1进行项目.我已将其上传到我的服务器,但是当我尝试使用Composer安装供应商软件包时,我遇到了很多依赖性错误.据推测,这与最新版本的Symfony刚刚发布和我的composer.json文件没有指定确切的版本号有关.
有什么办法可以快速显示本地机器上所有内容的版本号吗?
这是我的composer.json文件(几天前工作正常):
{
"name": "symfony/framework-standard-edition",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
"psr-0": { "": "src/" }
},
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.1.*",
"doctrine/orm": ">=2.2.3,<2.4-dev",
"doctrine/doctrine-bundle": "1.0.*",
"twig/extensions": "1.0.*",
"symfony/assetic-bundle": "2.1.*",
"symfony/swiftmailer-bundle": "2.1.*",
"symfony/monolog-bundle": "2.1.*",
"sensio/distribution-bundle": "2.1.*",
"sensio/framework-extra-bundle": "2.1.*",
"sensio/generator-bundle": "2.1.*",
"jms/security-extra-bundle": "1.2.*",
"jms/di-extra-bundle": "1.1.*",
"sonata-project/admin-bundle": "*",
"sonata-project/cache-bundle": "dev-master",
"sonata-project/doctrine-orm-admin-bundle": "dev-master",
"stof/doctrine-extensions-bundle": "1.1.x-dev",
"sonata-project/user-bundle": "dev-master",
"sonata-project/easy-extends-bundle": "dev-master",
"friendsofsymfony/user-bundle": "2.0.x-dev",
"friendsofsymfony/jsrouting-bundle": "*",
"liip/imagine-bundle": "*",
"simplethings/form-extra-bundle": "dev-master",
"antimattr/google-bundle": "dev-master",
"doctrine/doctrine-fixtures-bundle": "dev-master",
"genemu/form-bundle": "2.1.*",
"behat/behat": "2.4.*@stable",
"behat/mink": …Run Code Online (Sandbox Code Playgroud) 我是symfony2的新手并且正在阅读symblog.在尝试使用数据夹具的第三章中,我尝试了以下命令:
php composer.phar update
但是我得到了错误:
Could not open input file: composer.phar
所以我用Google搜索了一下并试了一下
php composer.phar install
Run Code Online (Sandbox Code Playgroud)
但仍然得到同样的错误.所以请指导如何处理这个作曲家在symfony2中使用wamp安装新的扩展或数据包等捆绑包.
我有两个分支,master和dev.我一直在使用dev,只有在批准生产使用后才能将代码检入主分支.当我这样做时,我必须做以下事情:
git checkout master
git merge dev
git checkout dev
Run Code Online (Sandbox Code Playgroud)
这非常冗长,而且由于我经常这样做,我想尽量减少它.有没有一个git命令可以用来从我当前的分支dev合并到另一个分支master而不必先检查master分支?有点像:
git merge dev to master
Run Code Online (Sandbox Code Playgroud)
会很棒的.我查看了git文档并没有看到任何内容.
我findBy()在Doctrine存储库上使用该方法:
$entities = $repository->findBy(array('type'=> 'C12'));
Run Code Online (Sandbox Code Playgroud)
我该如何订购结果?
这与我的另一个问题有关:使用REST API保持实体.
对于Symfony2中的项目,我需要能够使用远程(第三方)RESTful API来持久化实体.我还希望能够使用该API中的数据检索实体.
换句话说,我的对象保存在第三方数据库中.它们不会保存在我自己的数据库中.每当我需要保存数据或查找数据时,我都会使用他们的REST API.
我被指向了几个库,包括一个由Doctrine本身制作的库.但是,它们都没有为我提供我正在寻找的东西.由Doctrine制作的那个是最好的选择,但是使用Active Record模式并没有提供所有甜蜜的Doctrine 2.不要误会我的意思,我一直在使用Active Record实现,但我现在已经爱上了Doctrine的Data Mapper模式.
理想情况下,我希望能够使用Doctrine的ORM,只需用使用API调用保存实体的逻辑替换特定于数据库的部分.(当然,使用相同的API检索它们).这样我可以使用大致相同的语法保存我的实体:
// current way to save $entity in database:
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
// desired way to save $entity using REST API:
// (just an example, it doesn't have to be exactly like this)
$em = $this->getDoctrine()->getManager('rest');
$em->persist($entity);
$em->flush();
Run Code Online (Sandbox Code Playgroud)
请注意,我不是要尝试构建自己的API,而只是尝试与第三方API进行通信以保存我的实体.我对Doctrine很新,但到目前为止我还是喜欢它.我真的很喜欢从实体中分离持久性逻辑的想法,但到目前为止我无法找到如何使用API来保存它们.
Symfony的文档中有一篇文章,描述了如何与多个实体经理合作.我正在寻找类似于此的解决方案,但是使用实体管理器可以使用REST而不是数据库.
我一直试图自己调整Doctrine的ORM,但我最终只重写了一半代码,因为它(似乎)与数据库特定的逻辑紧密耦合.当然,我可能会做一些愚蠢的事情.
所以我的问题是,有没有办法用自定义的方式替换/覆盖Doctrine ORM的数据库特定部分?没有重写很多应该对所有持久化方法都很常见的事情?以前做过吗?或者它是不可能的,因为Doctrine旨在与数据库一起使用,并且不够灵活,不能用于其他用途?
CakePHP似乎可以通过让您定义自定义DataSource来实现此目的.这样你可以使用SQL数据库保存模型,但也可以使用API,会话等.我想大致相同,但使用Doctrine代替CakePHP.
实际的数据库查询似乎是由Doctrine\ORM\Persisters\BasicEntityPersister类执行的
.还有其他几个xxxPersister类,用于处理不同类型的继承.有可能用我们自己的类替换xxxPersister类,因此我们可以用REST …
在国际扩展是枝条的延伸,增加了的localizeddate,localizednumber和localizedcurrency过滤器.如何安装和设置扩展程序,以便在Twig模板中使用这些过滤器?
我试图将SonataMediaBundle与另一个实体联系起来:与ManyToMany有关系的产品.
架构和关系很好地创建.
但是,当我编辑或创建新产品时,我尝试添加一个按钮,我可以通过媒体库搜索媒体文件,然后使用按钮上传新文件.
对于OneToMany的关系,可以Admin\ProductAdmin::configureFormFields通过添加以下内容轻松完成:
->add('image', 'sonata_type_model_list', array(
'required' => false
), array(
'link_parameters' => array(
'context' => 'default',
'provider' => 'sonata.media.provider.image'
)
))
Run Code Online (Sandbox Code Playgroud)
因此,我获得了与SonataMediaBundle图库中已使用的相同的3个图标(从库中添加,上传和删除)
但关于ManyToMany的关系是不可能的!因为每次我选择媒体时,都会取代之前的媒体.所以我无法选择多种媒体类型.
我想和The Gallery一样使用(galleryHasMedia)
->add('galleryHasMedias', 'sonata_type_collection', array(
'by_reference' => false
), array(
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'position',
'link_parameters' => array('context' => $context)
))
Run Code Online (Sandbox Code Playgroud)
但是,它真的很复杂.如何通过ManyToMany关系在另一个实体上选择或上传多个媒体文件?
在网上进行了大量搜索后发现什么都没有,我想知道是否有一种简单的方法可以在非活动期后自动注销通过Symfony Security登录的用户.例如,我希望用户在30分钟不活动后退出.
我使用像这样的自定义用户提供程序.
但是在用户登录系统后,会话永不过期.即使他关闭浏览器并在几天后再次打开它,会话仍然有效.
无论如何,以自动方式甚至手动方式注销此用户?我怎样才能做到这一点?
我试图理解一个概念,而不是修复一段不起作用的代码.
我将采用表单(父表)和表单字段(子表)的一般示例.从逻辑上讲,这将是一种识别关系,因为没有表单就不能存在表单字段.

这将使我认为,为了将逻辑关系转换为技术关系,NOT NULLform_field表中的form_id字段的简单就足够了.(参见上面屏幕截图的左侧部分.)
但是,当我使用MySQL Workbench添加标识关系时,form_id不仅NOT NULL是主键的一部分,而且也是主键的一部分.(请参阅上面屏幕截图的右侧部分.)当我添加一个非识别关系时,NOT NULL仍然按逻辑方式应用它实际上也是一个识别关系.
我想这让我感到困惑,以及直到现在我总是简单地使用id字段作为主键的事实.
所以我理解识别与非识别关系的逻辑概念,但我不理解技术部分.
为什么它,正如这个答案所说的那样,"正确"的方式使外键成为孩子主键的一部分?
这些复合主键有什么好处?
我有一些表格,我收到电子邮件.而且我不想在桌面上收到电子邮件tbl_unsubscribe.我写的查询如下:
SELECT cand_email FROM tbl_cand_data
UNION
SELECT emp_email FROM tbl_emp_data
UNION
SELECT email FROM tbl_uptade_list
UNION
SELECT feed_email FROM tbl_feedback
UNION
SELECT admin_email FROM tbl_admin_emails
Run Code Online (Sandbox Code Playgroud)
但我收到语法错误.是MINUS运营商无效为MySQL?
php ×5
symfony ×4
composer-php ×2
doctrine-orm ×2
foreign-keys ×1
git ×1
intl ×1
mysql ×1
persistence ×1
primary-key ×1
rest ×1
session ×1
sonata-admin ×1
sql ×1
twig ×1
wamp ×1