我使用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) 我在我的项目中使用 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) 我正在使用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.
我正在尝试使用可上传的扩展名(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) 我在我的实体中设置了一个属性,如下所示:
/**
* @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.
我怎么解决这个问题?
谢谢.
我是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)
编译需要几秒钟.
有人能解释一下为什么吗?
谢谢.
symfony ×5
php ×4
doctrine-orm ×2
annotations ×1
decimal ×1
file-upload ×1
gulp ×1
javascript ×1
libsass ×1
onchange ×1
parameters ×1
performance ×1
precision ×1
return ×1
routes ×1
symfony5 ×1