我在Symfony2中使用Doctrine的querybuilder创建一个查询来获取实体.
我当前的代码如下所示:
$repository = $this->getDoctrine()->getRepository('AaaBundle:Application');
$queryBuilder = $repository->createQueryBuilder('a');
$queryBuilder
->addSelect('u')
->addSelect('i')
->orderBy('a.created_date', 'DESC')
->leftJoin('a.created_by', 'u')
->leftJoin('a.installations', 'i')
//->where('i.page = :page')
//->setParameter('page', $found)
;
Run Code Online (Sandbox Code Playgroud)
现在我可以使用它来获取所有页面,无论它们是否安装.但我只想加入它们$found页面可用(所以如果有应用程序的安装,但它在另一个页面上,安装将不会加入).如果我取消引用where子句,它将仅显示具有该页面安装的应用程序.我希望所有应用程序都有或没有安装页面.
在SQL中,我可以通过添加AND到连接来获得此功能
LEFT JOIN installations i ON a.id = i.app AND i.page = :page
Run Code Online (Sandbox Code Playgroud)
这样我就可以获得在页面上安装了应用程序的应用程序的安装信息,但是我在其他页面上安装或根本没有安装的应用程序的列上获得空值.
有没有办法在Doctrine中执行此操作,或者我最好只为每个应用程序获取所有安装,然后使用php检查找到的页面?
我composer.json包含以下声明:
"post-install-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
],
Run Code Online (Sandbox Code Playgroud)
我想运行我所拥有的自定义控制台命令src/MyBundle/Command/MyCommand.php.如何将其添加到脚本中以在composer中运行?
我正在尝试使用FOSUserBundle实现注册.我希望管理员能够注册一个新用户,我只需将注册更改为防火墙路由(/ admin/register prefix)即可.
我创建了一个自定义注册表单类型,并按照此处的说明将其注册为服务:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_forms.md
然后,基于此,我进入了注册事件:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/controller_events.md
我的听众看起来像这样:
use FOS\UserBundle\FOSUserEvents;
use FOS\UserBundle\Event\FilterUserResponseEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class RegistrationListener implements EventSubscriberInterface
{
private $router;
public function __construct(UrlGeneratorInterface $router)
{
$this->router = $router;
}
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::REGISTRATION_COMPLETED => 'onRegisterDone',
FOSUserEvents::REGISTRATION_CONFIRMED => 'onRegisterDone',
FOSUserEvents::RESETTING_RESET_COMPLETED => 'onRegisterDone',
);
}
public function onRegisterDone(FilterUserResponseEvent $event)
{
$url = $this->router->generate('admin_panel');
//$event->setResponse(new RedirectResponse($url));
}
}
Run Code Online (Sandbox Code Playgroud)
FilterUserResponseEvent没有setResponse方法,所以我只是让它运行.我认为订阅此事件将覆盖默认的FOS\UserBundle\EventListener\AuthenticationListener订阅事件并阻止用户登录,但新用户仍会登录.
是否可以阻止身份验证,或者我应该只创建一个新表单来调用操作来调用用户管理器?
我正在将文件上传到我为其创建了 Cloudfront 发行版的 S3 存储桶。我正在使用Aws\S3\S3Client课程。
上传后putObject,响应对象和getObjectUrl方法都将对象的 url 返回为https://s3-eu-west-1.amazonaws.com/mybucket/path/myfile.jpg。我正在尝试获取类似于https://d111111111ck.cloudfront.net/path/myfile.jpg的 Cloudfront 网址。
有什么办法可以直接获取这个 url,还是必须从我的分发主机名和文件路径中构建它?
我知道,一旦我发布了指向Facebook的链接,抓取工具就会访问该链接并从og meta标签收集信息并对其进行缓存.使用Facebook 调试器我可以在更改共享图像时强制刷新缓存的信息.
如果我尝试https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Fstackexchange.com在未登录时以编程方式或直接方式调用URL ,则会返回登录页面.
是否有资源或不同的链接可用于强制刷新内容而无需在开发者帐户上手动执行此操作?