在src /之外创建一个bundle

时间:2015-10-28 12:36:20

标签: symfony bundle src

我已经创建了一个包含symfony 2.3的软件包,但在这种情况下(因为我的老师问我)在src/文件夹之外,所以我有../symfony/fuentes/NameBundle而不是../symfony/src/NameBundle。新行出现在AppKernel中,我的新包出现在routing.yml上,但是当我尝试启动服务器时

Bundle generation

Generating the bundle code: OK
Checking that the bundle is autoloaded: FAILED
Confirm automatic update of your Kernel [yes]?
Enabling the bundle inside the Kernel: OK
Confirm automatic update of the Routing [yes]?
Importing the bundle routing resource: OK

The command was not able to configure everything automatically.
You must do the following changes manually.

- Edit the composer.json file and register the bundle
  namespace in the "autoload" section:

我已经编辑了自动加载并试了很多东西(在这里寻找)但总是出现同样的错误。

C:\Users\Akenateb\Documents\UOC\AULAMENTOR\Symfony>php app/console server:run 127.0.0.1:8080
PHP Fatal error:  Class 'AulaMentor\ExdosBundle\AulaMentorExdosBundle' not found in C:\Users\Akenateb\Documents\UOC\AULAMENTOR\Symfony\app\AppKernel.php on line 20

有人能帮助我吗?我真的坚持了下来。 提前谢谢。

4 个答案:

答案 0 :(得分:2)

首先,我要感谢那些已经回答的人。如果我们想在“src”之外创建一个捆绑包,我们就必须这样做。文件夹,例如在' fuentes' > ' ..的Symfony / Fuentes的'

如果你创建了' generate:bundle'我建议您接受当生成器询问您是否要创建完整结构时,如果您已创建包含生成器goto步骤3的包。

1-确保您已在AppKernel中注册了捆绑包,并且它存在如下所示的行:

新的YourProject \ NameprojectBundle \ YourProjectNameprojectBundle(),

2-确保您已添加到app / config / routing的路由以及' routing.yml'你有新的捆绑路线,像这样(你可以在你的网址上添加一个前缀,在这种情况下是fuentes):

<强> your_project_name:
    资源:&#34; @ YourProjectNameprojectBundle / Resources / config / routing.yml&#34;
    前缀:/ fuentes

3-我们编辑了app / autoload.php&#39;我们添加这一行:

<强> $装载机&gt;添加(&#39; YourProject&#39;,真实路径(__ DIR __&#39; /../ Fuentes的&#39;));

最后,我们可以使用命令行更新资产: php app / console assets:install web

希望对某人有所帮助 最诚挚的问候。

答案 1 :(得分:1)

完全如评论所述:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group">
  <div class="col-md-6">
    <label class="radio-inline">
      <input type="radio" name="optradio" id="optionOne" checked>Option 1</label>
    <label class="radio-inline">
      <input type="radio" name="optradio" id="optiontwo">Option 2</label>
  </div>
</div>
<div class="form-group option-div" id="optionOneDiv">
  <label class="control-label col-sm-3">Account Number: <sup class="req">*</sup>
  </label>
  <div class="col-md-6">
    <input class="form-control" type="text" name="optionOne" id="optionOne">
    <span class="glyphicon glyphicon-ok form-control-feedback correct"></span>
  </div>
</div>
<div class="form-group option-div" id="optiontwoDiv">
  <label class="control-label col-sm-3">Credit Card: <sup class="req">*</sup>
  </label>
  <div class="col-md-6">
    <input class="form-control" type="text" name="optionTwo" id="optionTwo">
    <span class="glyphicon glyphicon-ok form-control-feedback correct"></span>
  </div>
</div>

使用PSR约定自动加载Edit the composer.json file and register the bundle namespace in the "autoload" section 文件夹。如果在src文件夹之外设置类,则必须同时声明它们。

答案 2 :(得分:0)

composer.json文件中,您可以在autoload部分添加其他元素。以下是我认为适用于您的用例的示例:

"autoload": {
    "psr-0": {
      "NameBundle\\": "fuentes/",
      "": "src/"
    }
},

答案 3 :(得分:0)

当我们不想搞乱composer.json文件时,以下是如何在Symfony项目之外添加另一个包

两个第一点与Michael J.的答案相同。现在到第3点:

说,我们需要添加一个驻留在另一个项目中的 OurCompany / SomeBundle ,其相对路径是 ../../ OtherProject / src / OurCompany / SomeBundle CurrentProject / app dir。

因此我们以这种方式将此捆绑包添加到CurrentProject应用程序:

$loader->add('OurCompany\\SomeBundle', realpath(__DIR__.'/../../OtherProject/src'));

请注意应该如何使用斜杠和反斜杠(最后剩下的/或\并不重要,它足够聪明,可以搞清楚)。

对于要加载的整个命名空间(CurrentProject中可用的其他项目中的所有包名称空间):

$loader->add('OurCompany', realpath(__DIR__.'/../../OtherProject/src'));