我有一个DQL查询喜欢这个:
$dql = "SELECT p, count(u.id) as ucnt FROM IAA\Entity\Project p " .
"JOIN p.likedByUsers u ORDER BY ucnt";
$query = $this->_em->createQuery($dql);
Run Code Online (Sandbox Code Playgroud)
问题是,我怎么能坚持按计数排序,但不能得到它们的结果?我想只获得按计数排序的项目,而不是使用[project]和[ucnt]排序的项目.
在树枝模板中是否可以形成带有变量的翻译键?
喜欢
{% trans %}detail.label.price.{{membership}}.credit{% endtrans %}
要么
{% set str = "detail.label.price"+membership+".credit"|trans %}
我正在浏览与依赖注入相关的Symfony 2文档,但找不到自动装配的参考.我找到了一个提供此功能的捆绑包,但它仍处于测试版状态,似乎与注释相关(如果我错了,请纠正我).
我正在寻找的是一个对象(例如服务容器),它可以通过setter注入在我的服务中注入依赖项.
例如,我将定义一个服务:
class Service {
/**
* @var \PDO
*/
protected $pdo;
/**
* @param \PDO $pdo
* @Inject
*/
public function setPDO(\PDO $pdo) {
$this->pdo = $pdo;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我可以使用这个假设的服务容器在服务中注入依赖项,即使已在容器外创建了这个依赖项:
$service = new Service();
// ...
$container->inject($service);
Run Code Online (Sandbox Code Playgroud)
是否有可以通过这种方式自动装配依赖关系的DI容器?
我是Symfony2框架的新手,并不完全了解如何使用javascripts以及如何以最佳方式包含它们.
我需要的:将jQuery脚本包含在每个页面中.
我拥有:我有这样的共同布局:
<!DOCTYPE html>
<html>
<head>
{% block javascripts %}{% endblock %}
</head>
<body>
{% block body %}{% endblock %}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
应该放置jquery.js.那么web/bundles/jquery呢?或者有一些特殊的官方jquery捆绑?我应该使用asset()以及如何使用?
我一直在努力让SonataMedia与Symfony 2.0.16一起工作......但没有成功.谷歌搜索似乎没有多少人使用该捆绑或有一个我不知道的教程或操作方法,因为我没有得到很多关于我到目前为止的错误消息的信息.
无论如何,我的最后一次尝试给出了下一条错误消息:
The current field `path` is not linked to an admin. Please create one for the target entity : ``
Run Code Online (Sandbox Code Playgroud)
"path"是用于保存文件图像(相对)路径的字段.
AttachmentAdmin.php
<?php
class AttachmentAdmin extends Admin
{
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add(
'path',
'sonata_type_collection',
array(
'required' => true
),
array(
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'position',
'targetEntity' => 'Application\Sonata\MediaBundle\Entity\GalleryHasMedia',
'link_parameters' => array(
'context' => 'attachment'
)
)
)
->add('notes', 'textarea', array('required' => false))
;
}
// other methods
}
Run Code Online (Sandbox Code Playgroud)
Attachment.php
<?php
class …Run Code Online (Sandbox Code Playgroud) 我有简单的登录页面和安全设置如下:
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
use_referer: true
always_use_default_target_path: true
default_target_path: /
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, role: ROLE_ADMIN }
Run Code Online (Sandbox Code Playgroud)
在我的base.html.twig文件中,我有
{% stylesheets '@BrStgCcBundle/Resources/public/css/bootstrap.css' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
Run Code Online (Sandbox Code Playgroud)
并且仅当我在应用程序中获得授权时才包括那些文件.所以在登录后系统找到了这个资产,但在没有之前它没有,当我按资产跟踪生成的链接时,我被重定向到登录页面.
在视图中链接如下所示:
<link rel="stylesheet" href="/app_dev.php/css/026adfc_bootstrap_1.css" />
Run Code Online (Sandbox Code Playgroud)
此文件存在于驱动器上,当记录时调用时,如果未记录则显示正确的CSS,则会将我重定向到登录页面.
我正忙于需要一些ACL权限的Symfony2应用程序.
我是Symfony2的新手,所以不确定我是否正确地看着这个.
我有多个客户,每个客户都有多个帐户.
我有一个超级管理员(ROLE_SUPER_ADMIN),可以访问所有客户和所有帐户.然后我有一个管理员角色(ROLE_ADMIN),只允许访问特定客户端和该客户端的所有帐户.然后是代理(ROLE_AGENT),它应该只对客户端的某些帐户具有权限.
我在symfony文档上看到,为了让用户访问特定对象,我可以使用以下代码:
// creating the ACL
$aclProvider = $this->get('security.acl.provider');
$objectIdentity = ObjectIdentity::fromDomainObject($account);
$acl = $aclProvider->createAcl($objectIdentity);
// retrieving the security identity of the currently logged-in user
$securityContext = $this->get('security.context');
$user = $securityContext->getToken()->getUser();
$securityIdentity = UserSecurityIdentity::fromAccount($user);
// grant owner access
$acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OWNER);
$aclProvider->updateAcl($acl);
Run Code Online (Sandbox Code Playgroud)
因此,在创建新帐户时,我可以为当前登录用户提供对新创建帐户的访问权限.但是,如何授予客户访问该帐户的所有其他用户的访问权限?
我不想遍历所有用户并为每个用户运行上面的代码.
因此,例如,当查看所有客户端时,我需要知道用户可以访问哪些客户端,或者在查看帐户时,我需要知道用户可以访问哪些帐户.
此外,当向客户端添加新用户时,用户自动需要访问该客户端的所有帐户.
作为旁注,我只需要知道用户是否可以访问帐户/客户端.如果用户有权访问,则会自动允许他们查看/编辑/删除等.
我需要在同一主机上但在不同的子目录(或位置块)上安装多个symfony2应用程序.
使用此配置,nginx在尝试访问任何URL时抛出"找不到文件"或重定向循环消息.
例:
/login -> /base/login
/app1 -> /base/app1
/app2 -> /base/app2
Run Code Online (Sandbox Code Playgroud)
当前配置:
root /base/default; #Points to an empty directory
# Login Application
location ^~ /login {
alias /base/login/web;
try_files $uri app_dev.php;
}
# Anything else
location ~ ^/([\w\-]+) {
alias /base/$1/web;
try_files $uri app_dev.php;
}
location / {
# Redirect to the login
rewrite ^ /login redirect;
}
# Handle PHP
location ~ \.php$ {
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param HTTPS off;
fastcgi_pass …Run Code Online (Sandbox Code Playgroud) Gson gson = new Gson();
System.out.println(gson.fromJson("1", Object.class)); //output:1.0
System.out.println(gson.fromJson("1", String.class)); //output:1
System.out.println(gson.fromJson("1", Integer.class)); //output:1
Run Code Online (Sandbox Code Playgroud)
我正在尝试自定义反序列化器来修复它,但仍无法正常工作:
Gson gson = new GsonBuilder().registerTypeAdapter(Object.class,new JsonDeserializer<Object>() {
@Override
public Object deserialize(JsonElement json, Type typeOfT,JsonDeserializationContext context)throws JsonParseException {
return json.getAsInt();
}
}).create();
System.out.println(gson.fromJson("1", Object.class)); //still 1.0
Run Code Online (Sandbox Code Playgroud)
我在这里做错了吗?
你好我有小问题.我在sf2中从未做过表单验证器,所以我不知道应该从哪里开始.我有一个字段'用户名',它在数据库中是唯一的,所以我怎么试试呢?
我的代码:
- > ENTITY
/**
* @var string $nick_allegro
*
* @ORM\Column(name="nick_allegro", type="string", length=255, unique=true, nullable=true)
*/
private $nick_allegro;
Run Code Online (Sandbox Code Playgroud)
- >表格
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('nick_allegro')
;
}
public function getDefaultOptions(array $options) {
return array(
'data_class' => 'My\FrontendBundle\Entity\Licence',
);
}
Run Code Online (Sandbox Code Playgroud)
- >控制器
/**
* Displays a form to create a new Licence entity.
*
* @Route("/new", name="licence_new")
* @Template()
*/
public function newAction()
{
$entity = new Licence();
$form = $this->createForm(new LicenceType(), $entity);
return array( …Run Code Online (Sandbox Code Playgroud) symfony ×8
php ×4
symfony-2.1 ×3
acl ×1
assetic ×1
doctrine-orm ×1
dql ×1
forms ×1
gson ×1
java ×1
jquery ×1
json ×1
key ×1
nginx ×1
permissions ×1
sql ×1
translation ×1
twig ×1
url-routing ×1
validation ×1