小编Chu*_*ris的帖子

KnpMenuBundle和动态路由参数

我使用knpmenubundle为我的网站,这是我的问题:我有一个由这条路线列出的用户列表:/ admin/users和菜单是这样的:

User (is opened)
    list (is active)
    add new
Run Code Online (Sandbox Code Playgroud)

在列表视图中,菜单中的项目" 列表 "处于活动状态,就像我想要在添加新视图中一样,菜单中的" 添加新项" 是活动的,就像我想要的一样

但是,当我想编辑已经存在的用户时,我无法设置激活" 用户 "项,因为te路由具有动态参数

这是我的网站的结构:

在src/dn/AdminBundle/Resources/Config/routing.yml中

# Users
### List
dnAdmin_usersList:
    pattern: /users/{page}
    defaults: { _controller: dnAdminBundle:User:list, page: 1 }
    requirements:
        page:  \d*

### Edit
dnAdmin_userEdit:
    pattern: /user/edit/{id}
    defaults: { _controller: dnAdminBundle:User:edit}
    requirements:
        id: \d+
Run Code Online (Sandbox Code Playgroud)

在app/ressources/view/layout/html/twig中

{{ render(controller("dnAdminBundle:Common:leftMenu")) }}
Run Code Online (Sandbox Code Playgroud)

在src/dn/AdminBundle/Controller/CommonController中

public function leftMenuAction()
{
    return $this->render('dnAdminBundle:Common:leftMenu.html.twig');
}
Run Code Online (Sandbox Code Playgroud)

在src/dn/AdminBundle/Resources/view/Common/leftMenu/html.twig中

{{ knp_menu_render('leftMenu', {'template':'dnAdminBundle:Menu:knp_menu.html.twig', 'currentClass':'active', 'ancestorClass':'active'}) }}
Run Code Online (Sandbox Code Playgroud)

在src/dn/AdminBundle/Resources/config/services.yml中

services:
    dn_admin.menu_builder:
        class: dn\AdminBundle\Menu\MenuBuilder
        arguments: ["@knp_menu.factory"]

    dn_admin.menu.leftMenu:
        class: Knp\Menu\MenuItem
        factory_service: …
Run Code Online (Sandbox Code Playgroud)

php parameters routes symfony knpmenubundle

8
推荐指数
1
解决办法
9790
查看次数

PHP 8 属性

我在我的项目中使用 PHP8、Symfony 5.2 和 Doctrine 3.0,但是自Doctrine 2.9以来允许的 PHP 8 属性似乎不起作用。

use Doctrine\ORM\Mapping\Entity;

**
* @Entity(repositoryClass="App\Repository\MyClassRepository")
*/
class MyClass
{
Run Code Online (Sandbox Code Playgroud)

工作正常。

use Doctrine\ORM\Mapping\Entity;

#[Entity(repositoryClass: MyClassRepository::class)]
class MyClass
{
Run Code Online (Sandbox Code Playgroud)

返回[critical] Uncaught PHP Exception Doctrine\ORM\Mapping\MappingException: "Class "App\Entity\MyClass" is not a valid entity or mapped super class." at .../vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException.php line 378

这是我的composer.json:

"composer/package-versions-deprecated": "1.11.99.1",
"doctrine/doctrine-bundle": "^2.3",
"doctrine/doctrine-migrations-bundle": "^3.1",
"doctrine/orm": "^3.0",
"symfony/console": "5.2.*",
"symfony/dotenv": "5.2.*",
"symfony/flex": "^1.3.1",
"symfony/framework-bundle": "5.2.*",
"symfony/proxy-manager-bridge": "5.2.*",
"symfony/yaml": "5.2.*"
Run Code Online (Sandbox Code Playgroud)

php symfony doctrine-orm symfony5

7
推荐指数
1
解决办法
5794
查看次数

"在变革中"的学说责备延期不起作用

我正在使用stof Doctrine扩展的symfony 2.6.3.

TimeStampable和SoftDeletable工作得很好.

Blameable"on create"和"on update"也很好用:

/**
 * @var User $createdBy
 *
 * @Gedmo\Blameable(on="create")
 * @ORM\ManyToOne(targetEntity="my\TestBundle\Entity\User")
 * @ORM\JoinColumn(name="createdBy", referencedColumnName="id")
 */
protected $createdBy;

/**
 * @var User $updatedBy
 *
 * @Gedmo\Blameable(on="update")
 * @ORM\ManyToOne(targetEntity="my\TestBundle\Entity\User")
 * @ORM\JoinColumn(name="updatedBy", referencedColumnName="id")
 */
protected $updatedBy;
Run Code Online (Sandbox Code Playgroud)

但"改变"似乎并没有起作用.

/**
 * @var User $deletedBy
 *
 * @Gedmo\Blameable(on="change", field="deletedAt")
 * @ORM\ManyToOne(targetEntity="my\UserBundle\Entity\User")
 * @ORM\JoinColumn(name="deletedBy", referencedColumnName="id")
 */
protected $deletedBy;
Run Code Online (Sandbox Code Playgroud)

我在"deletedAt"字段上配置了SoftDeletable.SoftDeletable工作正常,但deletedBy从未填充.

我怎样才能让它发挥作用?我只想设置删除实体的用户ID.

php onchange symfony stofdoctrineextensions

6
推荐指数
1
解决办法
1535
查看次数

具有stof可上传扩展名的Symfony2上传文件

我正在尝试使用可上传的扩展名(stof/doctrine)在Symfony2下设置一个带文件上传的表单

这是我的实体

俱乐部

<?php  
...  
class Club  
{  
...
/**  
 * @ORM\ManyToOne(targetEntity="my\TestBundle\Entity\File", cascade={"persist"})  
 * @ORM\JoinColumn(nullable=true)  
 */  
private $logo;  
...  
}
Run Code Online (Sandbox Code Playgroud)

文件

<?php  
...  
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM; 
...  
/**
 * File
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="my\TestBundle\Entity\FileRepository")
 * @ORM\HasLifecycleCallbacks()
 * @Gedmo\Uploadable(pathMethod="getPath", callback="myCallbackMethod", filenameGenerator="SHA1", allowOverwrite=true, appendNumber=true)
 */
class File  
{  
 ...

/**
 * @var string
 *
 * @ORM\Column(name="name", type="string", length=255)
 * @Gedmo\UploadableFileName
 */
private $name;

...
Run Code Online (Sandbox Code Playgroud)

我的表格类型clubType

$builder->add('logo', new FileType())
Run Code Online (Sandbox Code Playgroud)

文件类型

$builder->add('name', 'file', array(
            'required' => false,
        )) …
Run Code Online (Sandbox Code Playgroud)

php file-upload symfony stofdoctrineextensions

5
推荐指数
1
解决办法
1123
查看次数

symfony2 doctrine decimal precision scale annotations被忽略

我在我的实体中设置了一个属性,如下所示:

/**
 * @var decimal
 *
 * @ORM\Column(name="latitude", type="decimal", precision=10, scale=7, nullable=true)
 */
private $latitude;
Run Code Online (Sandbox Code Playgroud)

但是当我生成数据库模式时:doctrine:database:create; 学说:模式:创建

我的字段在数据库中设置为十进制(10,0)(当我查找phpmyadmin时),因此,当插入数据如42.123456与表单时,此数据被截断为42.

我怎么解决这个问题?

谢谢.

precision annotations decimal symfony doctrine-orm

5
推荐指数
1
解决办法
2972
查看次数

使用返回时,Gulp sass(libsass)非常慢

我是Gulp的新手(对js不太满意).我用的时候

gulp.task('sass', function () {
  gulp
    .src('myfile.scss')
    .pipe(sourcemaps.init())
    .pipe(sass(myoptions))
    .pipe(sourcemaps.write('./'))
    .pipe(gulp.dest('mypath'))
    .pipe(browserSync.stream({match: '**/*.css'}));
});
Run Code Online (Sandbox Code Playgroud)

编译在几毫秒内完成

但是当我使用时

gulp.task('sass', function () {
  return gulp
    ...
});
Run Code Online (Sandbox Code Playgroud)

编译需要几秒钟.

有人能解释一下为什么吗?

谢谢.

javascript performance return gulp libsass

2
推荐指数
1
解决办法
1780
查看次数