我已经扩展了SonataUserBundle,我想自定义Admin查询来限制列表:
class UserAdmin extends BaseUserAdmin
{
// ...
public function createQuery($context = 'list')
{
$query = parent::createQuery($context);
$query->andWhere(
$query->expr()->eq($query->getRootAlias().'.company', ':comp')
);
$query->setParameter('comp', $securityContext->user->getCompany());
return $query;
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
在这里,我试图让用户只看到他公司的用户.
但是$securityContext没有设定.
有人可以告诉我如何将安全上下文注入我的管理类吗?
我正在使用wkhtmltopdf在我的应用程序中生成pdf报告,但是当生成pdf时,我在pdf中获得了登录页面.
这是我的行动:
public function exportPdfAction($id = 0)
{
$em = $this->container->get('doctrine')->getEntityManager();
$id = $this->get('request')->get($this->admin->getIdParameter());
$object = $this->admin->getObject($id);
if (!$object) {
throw new NotFoundHttpException(sprintf('unable to find the object with id : %s', $id));
}
if (false === $this->admin->isGranted('VIEW', $object)) {
throw new AccessDeniedException();
}
$pageUrl = $this->generateUrl('admin_rh_leave_conge_show', array('id'=>$id), true); // use absolute path!
return new Response(
$this->get('knp_snappy.pdf')->getOutput($pageUrl),
200,
array(
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'attachment; filename="Fiche_conge.pdf"'
)
);
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
如何将一些代码应用于管理员列表视图中显示的每个实体?
例如,如果我有一个TagManager并且需要为正在显示的每个实体加载标签,我该怎么做?是否有一种方法可以覆盖实体的管理员,还是可以绑定到某些列表格式事件?我找不到一个可以做到的地方.
我不想绑定到实体的onLoad事件.
我试着遵循这个教程:http://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/form_field_definition.html#advanced-usage-many-to-one来创建多个到 -一个表格领域.
但是在选择对象后,我得到了奇怪的选择值,如下面的屏幕截图所示.

实体StyleCategory有属性name,我希望它显示在那里而不是FQCN.怎么做?
我有一个Fonctionnaire实体类,它包含GradeToOne属性到Grade实体类.当我想将idGrade字段添加到FonctionnaireAdmin的ConfigureListField时(使用SonataAdmin)我收到此错误:
在SonataDoctrineORMAdminBundle中,在渲染模板期间抛出了一个异常("你必须在服务examens.examens.admin.fonctionnaire中为字段选项idGrade associated_property创建一个选项或创建Proxies\__CG__\Examens\ExamensBundle\Entity\Grade::__toString方法"):CRUD:list_orm_many_to_one.html.twig at第19行.
Fontionnaire.php类:
<?php
namespace Examens\ExamensBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Fonctionnaire
*/
class Fonctionnaire
{
//...//
/**
* @var \Examens\ExamensBundle\Entity\Grade
*/
private $idGrade;
//...//
}
Run Code Online (Sandbox Code Playgroud)
FonctionnaireAdmin.php:
<?php
namespace Examens\ExamensBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Validator\ErrorElement;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Show\ShowMapper;
use Examens\ExamensBundle\Entity\Fonctionnaire;
class FonctionnaireAdmin extends Admin
{
protected $datagridValues = array(
'_sort_order' => 'ASC',
'_sort_by' => 'codeFonctionnaire'
);
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('nomAr','text',array('label'=>'Nom arabe'))
->add('prenomAr','text',array('label'=>'Prénom arabe'))
->add('nomFr','text',array('label'=>'Nom français '))
->add('prenomFr','text',array('label'=>'Prénom …Run Code Online (Sandbox Code Playgroud) 我是Symfony的新手并试图在sonata管理包中列出图像.但我有点混淆如何在twig文件中获取一个对象,以便我可以得到我的图像源的确切路径.
这是我的代码
protected function configureListFields(ListMapper $listMapper)
{
// $image = $this->getSubject();
$listMapper
->addIdentifier('caption')
->add('image','string', array('template' => 'swaamImageUploaderBundle:Admin:list_image.html.twig'))
;
}
Run Code Online (Sandbox Code Playgroud)
这是我的list_image.html.twig文件
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field%}
<img src="{{ 'uploads/images/822b23a922f43bb664cb58ca57de6cccccc962e5.jpeg'}}">
{#<img src="{{ asset(image.getthumbWebPath) }}">#}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
在我的图像源标签中,我为测试提供了硬编码路径.但不知道如何从db获取路径.
另外,当我只写 - >添加('图像')在控制器中我从后端显示的db获取我的确切路径.
我有一个实体图像.
谁能帮帮我?
我是Symfony2的新手,我刚刚将它与fosUserBUndle 1.3.3,Sonata Admin BUndle和Sonata User BUndle一起安装.现在我收到一个我无法解决的错误.
这是我的错误:
(url localhost:8000/profile /):
Method "currentAncestor" for object "Knp\Menu\MenuItem" does not exist in
SonataBlockBundle:Block:block_side_menu_template.html.twig at line 29
Run Code Online (Sandbox Code Playgroud)
我能够成功登录,但登录后我收到此错误.任何帮助将不胜感激.
谢谢
简而言之:
当我在OneToMany关系中使用'sonata_type_collection'时,我必须指定关系的另一面,在"创建操作"中仍然不存在,并且可以设置"更新操作",但也可以完全指定不同的父母.
更详细的解释:
我正在使用Sonata Admin Bundle进行CRUD操作,并且假设我只有Post(id,title,content)和Tag(id,post_id,title)实体.我希望能够在编辑Post实体时添加和删除标记实体,因此我使用'sonata_type_collection'字段.
这是PostAdmin类的configureFormFields方法:
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('title')
->add('content')
->add('tags', 'sonata_type_collection', array(), array(
'edit' => 'inline',
'inline' => 'table'
))
))
;
}
Run Code Online (Sandbox Code Playgroud)
问题是在创建表单中,当我添加新标签时,我必须指定帖子和标题,但邮件仍然不存在,所以我无法添加标签.当我正在编辑帖子时,我可以添加新标签,但是对于其中的每一个,我都必须明确设置帖子,并且我能够为完全不同的帖子添加标签.
你能告诉我如何解决这个问题吗?
我想知道为什么更改SonataAdmin CSS时仪表板不更改颜色。
它考虑了CSS: - bundles/sonataadmin/vendor/admin-lte/dist/css/skins/skin-black.min.css
但是例如,如果我尝试调用该文件:skin-blue.min.css
文件存在时什么也没发生:/
我一点都不明白。
这是我的config.yml:
sonata_admin:
security:
handler: sonata.admin.security.handler.noop
acl_user_manager: null
title: 'CheerUp!'
title_logo: favicon.ico
templates:
user_block: 'SonataAdminBundle:Core:user_block.html.twig'
add_block: 'SonataAdminBundle:Core:add_block.html.twig'
layout: 'SonataAdminBundle::standard_layout.html.twig'
ajax: 'SonataAdminBundle::ajax_layout.html.twig'
dashboard: 'SonataAdminBundle:Core:dashboard.html.twig'
search: 'SonataAdminBundle:Core:search.html.twig'
list: 'SonataAdminBundle:CRUD:list.html.twig'
filter: 'SonataAdminBundle:Form:filter_admin_fields.html.twig'
show: 'SonataAdminBundle:CRUD:show.html.twig'
show_compare: 'SonataAdminBundle:CRUD:show_compare.html.twig'
edit: 'SonataAdminBundle:CRUD:edit.html.twig'
preview: 'SonataAdminBundle:CRUD:preview.html.twig'
history: 'SonataAdminBundle:CRUD:history.html.twig'
acl: 'SonataAdminBundle:CRUD:acl.html.twig'
history_revision_timestamp: 'SonataAdminBundle:CRUD:history_revision_timestamp.html.twig'
action: 'SonataAdminBundle:CRUD:action.html.twig'
select: 'SonataAdminBundle:CRUD:list__select.html.twig'
list_block: 'SonataAdminBundle:Block:block_admin_list.html.twig'
search_result_block: 'SonataAdminBundle:Block:block_search_result.html.twig'
short_object_description: 'SonataAdminBundle:Helper:short-object-description.html.twig'
delete: 'SonataAdminBundle:CRUD:delete.html.twig'
batch: 'SonataAdminBundle:CRUD:list__batch.html.twig'
batch_confirmation: 'SonataAdminBundle:CRUD:batch_confirmation.html.twig'
inner_list_row: 'SonataAdminBundle:CRUD:list_inner_row.html.twig'
outer_list_rows_mosaic: 'SonataAdminBundle:CRUD:list_outer_rows_mosaic.html.twig'
outer_list_rows_list: 'SonataAdminBundle:CRUD:list_outer_rows_list.html.twig'
outer_list_rows_tree: 'SonataAdminBundle:CRUD:list_outer_rows_tree.html.twig'
base_list_field: 'SonataAdminBundle:CRUD:base_list_field.html.twig'
pager_links: 'SonataAdminBundle:Pager:links.html.twig'
pager_results: …Run Code Online (Sandbox Code Playgroud) sonata-admin ×10
symfony ×8
php ×3
css ×1
login ×1
security ×1
sonata ×1
user-profile ×1
view ×1
wkhtmltopdf ×1