我想将Font Awesome 5添加到我的Symfony 4项目中,这就是我所做的:
yarn add --dev @fortawesome/fontawesome-free@import '~@fortawesome/fontawesome-free/scss/fontawesome';.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)我也尝试清除缓存,结果相同......
任何的想法?
我知道 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) 我对 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 中添加一些内容?或者其他一些配置参数?
我想使用 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)