小编syl*_*ain的帖子

如何使用Webpack Encore将Fontawesome 5添加到Symfony 4

我想将Font Awesome 5添加到我的Symfony 4项目中,这就是我所做的:

  • 我使用yarn为我的项目添加了字体真棒: yarn add --dev @fortawesome/fontawesome-free
  • 我在我的主scss文件(assets/css/app.scss)中导入了很棒的字体: @import '~@fortawesome/fontawesome-free/scss/fontawesome';
  • 我的webpack加装配置包括我的scss和js文件: .addEntry('js/app', './assets/js/app.js') .addStyleEntry('css/app', './assets/css/app.scss')
  • 我编译: ./node_modules/.bin/encore dev

一切似乎都没问题,但是当我尝试在我的视图中使用字体真棒时,我只会得到一个方形图标.生成的app.css文件似乎没问题,因为我可以看到字体很棒的图标定义,例如:

.fa-sign-out-alt:before {
    content: "\F2F5";
}
Run Code Online (Sandbox Code Playgroud)

似乎缺少'内容'部分,我想是因为没有加载字体...我是否需要添加一些内容来加载webfonts?我试图在我的app.js资产文件中添加字体awesome js,但它不会改变任何东西.我还尝试在我的webpack加装配置中添加自定义加载器(如https://github.com/shakacode/font-awesome-loader/blob/master/docs/usage-webpack2.md#setup-for-webpack-2)我也尝试清除缓存,结果相同......

任何的想法?

font-awesome-5 webpack-encore symfony4

22
推荐指数
5
解决办法
8554
查看次数

教义一对多级联持续存在,外键为空

我知道 SA 中有几个关于此的主题,但我不明白为什么我的代码不起作用......让我解释一下:

我有一个公司实体,可能有许多相关用户。当我创建公司时,我想使用相同的表单创建一个“admin”用户(第一个用户)。

我的实体:

class Company
{
    **
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Column(type="integer")
    */
    private $id;
    ...

    /**
     * A company has many users.
     * @ORM\OneToMany(targetEntity="User", mappedBy="company", cascade={"persist"})
     */
    private $users;
    ...

    public function __construct() {
        $this->users = new ArrayCollection();
    }

    public function addUser(User $user)
    {
        $user->setCompany($this);
        $this->users->add($user);
        return $this; // doesn't appear in the documentation but found in SA... doesn't change anything
    }

    public function removeUser(User $user)
    {
        // ...
    }

}


class User
{
    **
     * …
Run Code Online (Sandbox Code Playgroud)

php doctrine symfony

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

Symfony 4:忽略来自调试工具栏的内核事件

我对 Symfony 很陌生,所以如果这对你来说很明显,请原谅我:)

对于我的项目,我需要根据 url 执行一些操作。我使用内核事件,更具体地说是内核请求这样做。

在 services.yaml 中:

App\Service\UrlManager:
    tags:
        - { name: kernel.event_listener, event: kernel.request}  
Run Code Online (Sandbox Code Playgroud)

在 UrlManager.php 中:

public function onKernelRequest(GetResponseEvent $event)
{
    $request = Request::createFromGlobals();
    $hostname = parse_url($request->server->get('HTTP_HOST'),PHP_URL_HOST);

    /*
     * here my treatment that works fine :)
     */ 
Run Code Online (Sandbox Code Playgroud)

但是当我处于 DEV 模式时,调试工具栏再次触发了相同的事件......我发现的唯一解决方法是在我的治疗之前添加它:

if (substr($request->server->get('REQUEST_URI'),0,6) != '/_wdt/') {
Run Code Online (Sandbox Code Playgroud)

也可以正常工作,但我认为这不是最好的做法,因为某些非常具体的内容将保留在项目中,并且仅适用于 DEV 模式。有没有办法“告诉”工具栏不要触发这个事件?也许可以在 services.yaml 中添加一些内容?或者其他一些配置参数?

php debugging events symfony symfony4

3
推荐指数
1
解决办法
761
查看次数

在 Symfony4 中测试服务:找不到类

我想使用 phpunit 桥在 Symfony 4 中测试我的服务,但是当我启动测试时,我得到:

Error: Class 'App\Service\CompanyManager' not found
Run Code Online (Sandbox Code Playgroud)

我的服务位于 src/Service/CompanyManager.php

测试/Service/CompanyManagerTest.php

namespace App\Tests\Service;

use App\Service\CompanyManager;
use PHPUnit\Framework\TestCase;
use App\Entity\Company;

class CompanyManagerTest extends TestCase
{
    public function testGetCompany()
    {
        $companyManager = new CompanyManager();
        $company = $companyManager->getCompany(2);
        $this->assertInstanceOf(Company::class,$company);
        $company = $companyManager->getCompany(1000);
        $this->assertNull($company);
    }
}
Run Code Online (Sandbox Code Playgroud)

在config/services_test.yaml中,有这样的语句:

# If you need to access services in a test, create an alias
# and then fetch that alias from the container. As a convention,
# aliases are prefixed with test. For example: …
Run Code Online (Sandbox Code Playgroud)

php phpunit symfony4

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