Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 3

0
votes
answers
55 views
+10

Symfony的:獲取實體radio_widget

0

隨着Symfony的,我有從實體無線電形式:Symfony的:獲取實體radio_widget

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('color', EntityType::class, [ 
      'class' => Color::class, 
      'expanded' => true, 
      'label_attr' => [ 
       'class' => 'radio-inline' 
      ], 
      'label' => 'label.color', 
      .... 

但是,當我轉儲()在radio_widget,我沒有實體:

array:28 [▼ 
    "value" => "1" 
    "attr" => [] 
    "form" => FormView {#975 ?} 
    "id" => "news_category_versions_0_color_1" 
    "name" => "1" 
    "full_name" => "news_category[versions][0][color]" 
    "disabled" => false 
    "label" => "Blue" 
    "label_format" => null 
    "multipart" => false 
    "block_prefixes" => array:4 [?] 
    "unique_block_prefix" => "_news_category_versions_entry_color_entry" 
    "translation_domain" => false 
    "cache_key" => "_news_category_versions_entry_color_entry_radio" 
    "errors" => FormErrorIterator {#1186 ?} 
    "valid" => true 
    "data" => false 
    "required" => true 
    "size" => null 
    "label_attr" => [] 
    "compound" => false 
    "method" => "POST" 
    "action" => "" 
    "submitted" => false 
    "help_translation_domain" => null 
    "checked" => false 
    "parent_label_class" => "radio-inline" 
    "app" => AppVariable {#1216 ?} 
] 

我可以在radio_widget中獲得實體嗎?每個收音機都有一個特定的顏色(藍色,紅色,綠色等)。

沙发
0
0

是的,它是可能的:

應用程序實體顏色:

namespace AppBundleForm; 


use AppBundleEntityColor; 
use AppBundleEntityColorProduct; 
use DoctrineORMEntityRepository; 
use SymfonyBridgeDoctrineFormTypeEntityType; 
use SymfonyComponentFormAbstractType; 
use SymfonyComponentFormFormBuilderInterface; 
use SymfonyComponentOptionsResolverOptionsResolver; 

class ColorProductType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('color', EntityType::class, array(
      'class'   => Color::class, 
      'choice_label' => 'name', 
      'query_builder' => function (EntityRepository $er) { 
       return $er->createQueryBuilder('c'); 
      }, 
      'expanded' => true, 
      'required' => true, 
     )); 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => ColorProduct::class 
      ) 
     ); 
    } 
} 

namespace AppBundleEntity; 

use DoctrineORMMapping as ORM; 

/** 
* Class Color 
* 
* @package AppBundleEntity 
* 
* @ORMTable() 
* @ORMHasLifecycleCallbacks() 
* @ORMEntity(repositoryClass="AppBundleEntityColorRepository") 
*/ 
class Color 
{ 
    /** 
    * @var int $id 
    * @ORMId() 
    * @ORMColumn() 
    * @ORMGeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @var string $name 
    * @ORMColumn(type="string", length=255) 
    */ 
    protected $name; 

    /** 
    * @ORMOneToMany(targetEntity="ColorProduct", mappedBy="color", cascade={"all"}) 
    */ 
    protected $product; 

    /** 
    * Constructor 
    */ 
    public function __construct() 
    { 
     $this->product = new DoctrineCommonCollectionsArrayCollection(); 
    } 

    /** 
    * Get id 
    * 
    * @return string 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set name 
    * 
    * @param string $name 
    * 
    * @return Color 
    */ 
    public function setName($name) 
    { 
     $this->name = $name; 

     return $this; 
    } 

    /** 
    * Get name 
    * 
    * @return string 
    */ 
    public function getName() 
    { 
     return $this->name; 
    } 

    /** 
    * Add product 
    * 
    * @param AppBundleEntityColorProduct $product 
    * 
    * @return Color 
    */ 
    public function addProduct(AppBundleEntityColorProduct $product) 
    { 
     $this->product[] = $product; 

     return $this; 
    } 

    /** 
    * Remove product 
    * 
    * @param AppBundleEntityColorProduct $product 
    */ 
    public function removeProduct(AppBundleEntityColorProduct $product) 
    { 
     $this->product->removeElement($product); 
    } 

    /** 
    * Get product 
    * 
    * @return DoctrineCommonCollectionsCollection 
    */ 
    public function getProduct() 
    { 
     return $this->product; 
    } 
} 

在ColorProductEntity

namespace AppBundleEntity; 

use SymfonyComponentValidatorConstraints as Assert; 
use DoctrineORMMapping as ORM; 

/** 
* @ORMTable() 
* @ORMHasLifecycleCallbacks() 
* @ORMEntity(repositoryClass="AppBundleEntityColorRepository") 
* 
*/ 
class ColorProduct 
{ 
    /** 
    * @var int $id 
    * @ORMId() 
    * @ORMColumn() 
    * @ORMGeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORMManyToOne(targetEntity="Color", inversedBy="product") 
    * @ORMJoinColumn(name="color_id", referencedColumnName="id") 
    */ 
    protected $color; 




    /** 
    * Get id 
    * 
    * @return string 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set color 
    * 
    * @param AppBundleEntityColor $color 
    * 
    * @return ColorProduct 
    */ 
    public function setColor(AppBundleEntityColor $color = null) 
    { 
     $this->color = $color; 

     return $this; 
    } 

    /** 
    * Get color 
    * 
    * @return AppBundleEntityColor 
    */ 
    public function getColor() 
    { 
     return $this->color; 
    } 
} 

爲colorProduct的formType與顏色實體一個關係

在控制器:

/** 
    * @Route("/product/color", name="product_color") 
    * @param SymfonyComponentHttpFoundationRequest $request 
    * 
    * @return SymfonyComponentHttpFoundationResponse 
    */ 
    public function addColorProduct(Request $request) { 
     $colorType = new ColorProduct(); 
     $form = $this->createForm(ColorProductType::class, $colorType); 

     $form->handleRequest($request); 

     if ($form->isSubmitted()) { 
      //......... 
     } 

     return $this->render('AppBundle:product:color.html.twig', array('form' => $form->createView())); 
    } 

嫩枝模板:

<h1>Color product</h1> 

{{ form_start(form) }} 
    {{ form_row(form.color) }} 
{{ form_end(form) }} 

其結果是:

enter image description here

0
votes
answers
70 views
+10

Symfony「無效的env」 - 只允許「字」字符

2

我目前正在嘗試啓動並運行Symfony項目。問題是,當我嘗試建立我不斷收到Symfony「無效的env」 - 只允許「字」字符

[SymfonyComponentDependencyInjectionExceptionInvalidArgumentException] 
Invalid env(resolve:DATABASE_URL) name: only "word" characters are allowed. 

數據庫我編輯了.env文件,有我的本地數據庫的憑據。該DATABASE_URL變量如下所示:

DATABASE_URL="mysql://user:[email protected]:3306/db_name?charset=utf8mb4&serverVersion=5.7" 

其中當然,用戶,通過和DB_NAME是憑據。

有關如何解決此問題的任何想法?

沙发
0
7

我在doctrine recipe發現了一些東西。這很可能是因爲你正在使用symfony 3.3和symfony/flex,所以你需要刪除resolve關鍵字,即。在config/packages/doctrine.yaml

doctrine: 
    dbal: 
     url: '%env(DATABASE_URL)%' 

瞭解更多信息

+0

看到這個news我刪除了'決心:'關鍵字就像評論說。但現在我得到:找不到環境變量:「DATABASE_URL」。這很奇怪,因爲我確實在.env文件中定義了它。 –

+0

確保您在'dev'環境中運行您的應用程序。 'prod'中默認不加載Dotenv組件。查看你的'bin/console'和'public/index.php'文件以及如何使用dotenv組件。 –

+0

在Homestead VM上運行。我如何管理環境? –

0
votes
answers
41 views
+10

Symfony路由長度限制

0

是否存在路由長度要求? 例如: 我發現這對Stacko:Symfony路由長度限制

/** 
* @Route("/{shortUrl}", requirements={„shortUrl" : "[a-zA-Z0-9]{8}"}) 
* @method({"GET"}) 
*/ 

我希望{8}它規定只有被稱爲當「SHORTURL」剛好8個字符長,但不起作用。

的理解:
我建了一個網址縮短服務,現在我面臨這個問題:
路由上面,當用戶輸入URL別名我的網站爲他創建並重定向他,這個作品被調用如預期。 該別名由小寫字母和數字(隨機)組成。
但是,當他想要查看他的個人資料(localhost/profile)時,上面的路由被調用而不是配置文件路由,儘管「profile」部分只有7個字符長。

沙发
0
0

試試這個

/** 
* @Route("/{shortUrl}", requirements={"shortLink" : "^[a-zA-Z0-9]{8}$"}) 
* @method({"GET"}) 
*/ 

您需要使用正則表達式符號^和$說「首先」和「結尾」。同樣在您的正則表達式模式中,您忘記了UpperCase匹配中A和Z之間的負號。

+0

謝謝!完美的作品!我相應地改變了我的帖子。我upvoted,但它不算數,因爲我在這裏是新的。 – Moses

+0

如果您想稍後再回來並投票,則沒有問題。 – Mz1907

0
votes
answers
46 views
+10

EasyAdminBundle - 「easy_admin.list」下無法識別的選項「排序」

0

我一直在尋找一種方法來覆蓋基於主鍵的數據的默認排序。EasyAdminBundle - 「easy_admin.list」下無法識別的選項「排序」

我發現了一些從文檔中排序數據的配置示例,但它不起作用。

它說

無法識別的選項 「排序」 下的 「easy_admin.list」

easy_admin: 
    entities: 
     Customer: 
      class: AppBundleEntityCustomer 
      list: 
       sort: 'name' 
      form: 
       title: 'Add Customer' 
       form_options: {validation_groups:['Default']} 

       fields: 
        - name 
        - {property: 'gender', type: 'choice', type_options: 
                { 
                placeholder: 'Select your gender', 
                choices: { 
                 Female: 'female', 
                 Male: 'male' 
                } 
                } } 
        - {property: 'birthdate', type: 'date', type_options: {widget: 'single_text'}} 
        - isActive 
      new: 
       form_options: {validation_groups: ['Default','Customer']} 
      edit: 
       title: 'Edit Customer' 

site_name: 'Premiere Sales' 
+0

你在哪裏找到例? –

沙发
0
1

你用錯了地方sort選項。你應該設置sort選項下的配置你的實體範圍:

easy_admin: 
    entities: 
     User: 
      # ... 
      list: 
       # if the sort order is not specified, 'DESC' is used 
       sort: 'createdAt' 
+0

我試過了,但沒有生效。我將用配置更新我的問題 –

+0

在您更新的問題中,您沒有任何問題。但是之前發佈的錯誤消息說您使用'easy_admin'部分下的'sort'選項。 –

+0

是的,我根據你的建議和工作原理調整了配置。 –

板凳
0
-1

看來我上面貼的配置是正確的,我只是重新啓動服務器和瀏覽器,它工作正常

0
votes
answers
35 views
+10

Symfony/PHP7,傳遞參數與AJAX

0

我創建eisenhover矩陣,我想要一個按鈕來刷新網格中的數據,但我不知道如何傳遞參數/變量與AJAX。Symfony/PHP7,傳遞參數與AJAX

/** 
* @Route("/articles/list", name="articles_list") 
*/ 
public function showArticlesAction(bool $important = false, bool $urgent = false){ 
    $articles = $this->returnAllArticles(); 

    return $this->render(
     'articles/list.html.twig', 
     array('articles' => $articles, 
      'important' => $important, 
      'urgent' => $urgent) 
    ); 
} 

和腳本

function refreshFunctionName() 
    { 
     $.ajax({ 
      type: "POST", 
      url: "{{ path('articles_list') }}", 
      data: {'important': true, 'urgent': true}, 
      cache: false, 
      success: function(data){ 
       $('#list').html(data); 
      }, 
      error: function(){}, 
      complete: function(){} 
     }); 
    } 

的showArticlesAction始終把默認的數據,如果我嘗試使用AJAX使用它,工作正常:

{{ render(controller(
    'AppBundle:Articles:showArticles', 
    { 'important': true, 
    'urgent': true} 
    )) }} 
沙发
0
0

您需要定義的那些參數路線定義:

/** 
* @Route("/articles/list/{important}/{urgent}", name="articles_list") 
*/ 

,你在AJAX調用GET方法或從POST表中獲取這些參數

/** 
* @Route("/articles/list", name="articles_list") 
*/ 
public function showArticlesAction(Request $request){ 
    $articles = $this->returnAllArticles(); 

    $important = $request->request->get('important'); 
    $urgent = $request->request->get('urgent'); 

    return $this->render(
     'articles/list.html.twig', 
     array('articles' => $articles, 
      'important' => $important, 
      'urgent' => $urgent) 
    ); 
} 
0
votes
answers
63 views
+10

控制器不會返回Symfony 2中的OneToMany關係字段

1

我需要使用Document模型返回完整響應。我有迴應,但缺少一些實體定義的領域。例如,我需要回應「廣告系列」和「模板」屬性 - 但實際上「廣告系列」不存在。控制器不會返回Symfony 2中的OneToMany關係字段

下面是我的控制器和實體。

我有我的控制器,這樣的行動:

/** 
* @RESTView(serializerGroups={"Default", "DocumentDetails"}) 
* @RESTGet("/{id}", requirements={"id" = "d+"}) 
* @ParamConverter("document", class="AppBundle:Document"); 
*/ 
public function showAction(Request $request, Document $document) 
{ 
    return $document; 
} 

但文檔實體有關係:

/** 
* Document entity 
* 
* @ORMEntity(repositoryClass="AppBundleRepositoryDocumentRepository") 
* @ORMTable(name="document") 
* @ORMHasLifecycleCallbacks() 
* 
* @SerializerExclusionPolicy("all") 
*/ 
class Document 
{ 
....... 

/** 
* @var campaign 
* @ORMManyToOne(targetEntity="Campaign", inversedBy="documents") 
* @ORMJoinColumn(name="campaign", referencedColumnName="id") 
* 
* @SerializerExpose() 
*/ 
protected $campaign; // **THIS FIELD IS ABSENT - WHY !???** 

/** 
* @var DocumentTemplate Szablon dokumentu 
* 
* @ORMManyToOne(targetEntity="DocumentTemplate") 
* @ORMJoinColumn(name="template_id", referencedColumnName="id") 
* 
* @SerializerExpose() 
*/ 
protected $template; // **THIS PROPERTY IS DISPLAYED** 

....... 

$document->template出現在$文件的響應。但$document->campaign缺席。哪裏不對 ?可能它與serializerGroups有某種關係?謝謝你的幫助。

+1

你確定'campaign'不是null嗎? – PizzaLover

+0

是的,在數據??庫中它被設置爲與現有Campaign相關的有效ID號碼。 – Lexxusss

+0

你有getter/setters嗎?如果您正在獲取模板而不是Campaign,則代碼中會出現錯誤。 – MEmerson

沙发
0
1

解決!感謝大家的幫助。該問題與JMSSerializer有關。 有需要首先設置串行器配置文件中services.yml

app.serializer.listener.document: 
    class: AppBundleEventListenerSerializerDocumentSerializationListener 
    tags: 
     - { name: jms_serializer.event_subscriber } 

然後建立這個監聽器是創建表單子場campaign和插入有活動對象:

<?php 


namespace AppBundleEventListenerSerializer; 


use AppBundleEntityCampaign; 
use AppBundleEntityDocument; 
use JMSSerializerEventDispatcherEventSubscriberInterface; 
use JMSSerializerEventDispatcherObjectEvent; 

class DocumentSerializationListener implements EventSubscriberInterface 
{ 
    /** 
    * @param ObjectEvent $event 
    * @return void 
    */ 
    public function onPostSerialize(ObjectEvent $event) 
    { 
     $entity = $event->getObject(); 

     if (!($entity instanceof Document)) { 
      return ; 
     } 

     $groups = $event->getContext()->attributes->get('groups')->getOrElse([]); 

     if (in_array('DocumentDetails', $groups)) { 
      $visitor = $event->getVisitor(); 

      $campaign = $this->getCampaignClone($entity->getCampaign()); 

      if ($visitor->hasData('campaign')) { 
       $visitor->setData('campaign', $campaign); 
      } else { 
       $visitor->addData('campaign', $campaign); 
      } 
     } 
    } 

    /** 
    * @inheritdoc 
    */ 
    public static function getSubscribedEvents() 
    { 
     return [ 
      [ 
       'event' => 'serializer.post_serialize', 
       'class' => 'AppBundleEntityDocument', 
       'method' => 'onPostSerialize' 
      ] 
     ]; 
    } 

    private function getCampaignClone(Campaign $documentCampaign) 
    { 
     $campaign = new stdClass(); 
     $campaign->id = $documentCampaign->getId(); 
     $campaign->title = $documentCampaign->getTitle(); 
     $campaign->status = $documentCampaign->getStatus(); 
     $campaign->rows = $documentCampaign->getRows(); 
     $campaign->createdAt = $documentCampaign->getCreatedAt()->format(DATE_W3C); 
     $campaign->updatedAt = $documentCampaign->getUpdated()->format(DATE_W3C); 

     return $campaign; 
    } 
} 

這看起來奇怪我知道 - 但這個唯一的解決方案,我發現強制將實體插入表單請求。

0
votes
answers
41 views
+10

從控制器獲取值以形成symfony 3

0

我不知道爲什麼我無法從控制器的變量獲取窗體上的值。從控制器獲取值以形成symfony 3

我的控制器:

public function indexAction(Request $request,$id){ 
    $ac = new Usersacademi(); 
    $form = $this->createForm(UsersacademiType::class,$ac,array('id'=>$id)); 
    $form->handleRequest($request); 

    if($form->isValid()){ 
     $ac->setIdacademicprogram($form->get("idacademicprogram")->getData()); 
     $ac->setIduser($form->get("iduser")->getData()); 
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($ac); 
     $flush = $em->flush(); 
    } 
    else{ 
    } 


    return $this->render("AppBundle:admin:apteacher.html.twig", array(
     "form" => $form->createView() 
    )); 
} 

我的形式:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('idacademicprogram', EntityType::class, array(
      "required"=>"required", 
      'class' => 'AppBundle:Academicprogram', 
      'choice_label' => 'name' 
     )) 
     ->add('iduser', NumberType::class, array("required"=>"required", 
      "data" =>$options["id"], 
      "attr"=>array(
      "class" => "form-iduser form-control" 
     ))); 
} 

而且我得到這個錯誤:

The option "id" does not exist. Defined options are: "action", "allow_extra_fields", "attr", "auto_initialize", "block_name", "by_reference", "compound", "constraints", "csrf_field_name", "csrf_message", "csrf_protection", "csrf_token_id", "csrf_token_manager", "data", "data_class", "disabled", "empty_data", "error_bubbling", "error_mapping", "extra_fields_message", "inherit_data", "invalid_message", "invalid_message_parameters", "label", "label_attr", "label_format", "mapped", "method", "post_max_size_message", "property_path", "required", "translation_domain", "trim", "upload_max_size_message", "validation_groups".

+1

你的UsersacademiType :: configureOptions()是什麼樣的? http://symfony.com/doc/3.3/form/create_custom_field_type.html#defining-the-field-type – Cerad

沙发
0
1

申報setDefaultOptions空數組。

public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'YourEntity', 
     'id' => array(), 
    )); 
} 
0
votes
answers
24 views
+10

Symfony上的Minio

0

所以我的一位同事推薦我使用Minio作爲我的文件存儲。Symfony上的Minio

我在研究它,但網絡上沒有足夠的資源讓我繼續前行。我找到了具有Amazon S3適配器的KNPGaufretteBundle。 Minio與Amazon S3兼容,我可以使用它嗎?

謝謝!

+0

Flysystem是PHP的主要文件系統抽象,它們的S3驅動也適用於數字海洋的空間,它與API兼容,因此我會考慮這一點。 Flysystem已經集成了大多數框架。 –

+0

我使用docker運行minio,現在當我嘗試上傳時,它說我的bucket dosent存在,事實上,我在minio瀏覽器上創建它。有沒有一種方法可以指定主機? – iamjc015

沙发
0
0

aws-sdk-php適用於minio,所以你應該可以使用minio的KNPGaufretteBundle。

您也可以查看laralvel支持。

0
votes
answers
44 views
+10

無法在UploadedFile的Symfony的獲得文件內容

0

我有以下函數定義:無法在UploadedFile的Symfony的獲得文件內容

public function save(UploadedFile $file, string $fileSystemName) 
{ 
    $fs = $this->fileSystemMap->get($fileSystemName); 

    $contents = file_get_contents($file->getRealPath()); 
    $filename = sprintf('%s/%s/%s/%s.%s', date('Y'), date('m'), date('d'), uniqid(), $file->getClientOriginalExtension()); 

    $fs->write($fileName, $contents); 
} 

當代碼運行:

的file_get_contents($文件 - > getRealPath());

它拋出一個錯誤說:

警告:的file_get_contents(/ tmp目錄/ phpM9Ckmq):未能打開流:沒有這樣的文件或目錄

請注意,我也試着使用$ file-> getPathName(),但結果是一樣的。

這是怎麼發生的?

謝謝!

+1

提供您正在使用的sf版本 – habibun

+1

爲什麼不使用移動方法? '$ file-> move($ directory,$ name)' – Orange18947

沙发
0
0

可以在UploadFormType使用的Symfony 分量表格延期核心型號文件類型的文件

喜歡的東西:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('file', UploadFormType::class); 
} 

之後,你可以做這樣的事情在你的控制器

$form = $this->get('form.factory')->create(UploadFormType::class); 
$form->handleRequest($request); 

$file = $form->getData(); 

$文件將 SplFileInfo的實例,你可以使用$文件 - > getRealPath()方法。

0
votes
answers
48 views
+10

Symfony的4:Dotenv ::填充回報沒有

0

我試圖運行生產Symfony4應用程序,我收到以下錯誤:Symfony的4:Dotenv ::填充回報沒有

Uncaught TypeError: Return value of Symfony\Component\Dotenv\Dotenv::populate() must be an instance of Symfony\Component\Dotenv\void, none returned in /var/www/html/vendor/symfony/dotenv/Dotenv.php:95
Stack trace:
#0 /var/www/html/vendor/symfony/dotenv/Dotenv.php(57): Symfony\Component\Dotenv\Dotenv->populate(Array)
#1 /var/www/html/public/index.php(12): Symfony\Component\Dotenv\Dotenv->load('/var/www/html/s...')
#2 {main}
 thrown in /var/www/html/vendor/symfony/dotenv/Dotenv.php on line 95 

在本地的應用程序運行正常。一旦轉入生產,它就會中斷。

任何想法,爲什麼這可能會發生?

沙发
0
2

而且正在生產運行PHP5.x或7.0? void return type is only available/reserved from PHP 7.1,所以它會認爲它可能是同一個命名空間中的一個類 - 它也不存在。 Symfony 4 requires PHP 7.1.3