我试图使用另一个捆绑软件中的服务,而没有在捆绑软件之间创建任何依赖关系。我正在尝试使用,CompilerPass但这可能不是最好的方法。
我ParamConverter在BarBundle中创建了一个FooBundle应该用于它的Controllers。
但是我得到了错误: No converter named foo_bundle.converter_service found for conversion of parameter fooObject
到目前为止,我有:
app / config / config.yml
foo_bundle:
converter_service: bar_bundle.converter.object
Run Code Online (Sandbox Code Playgroud)
src / BarBundle / config / service.yml
services:
bar_bundle.converter.object:
class: BarBundle\ParamConverter\ObjectParamConverter
tags:
- { name: request.param_converter, priority: 0, converter: bar_bundle.converter.object }
Run Code Online (Sandbox Code Playgroud)
src / FooBundle / DependencyInjection / FooBundleExtension.php
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
$container->setParameter('foo_bundle.converter_service.id', $config['converter_service']);
}
Run Code Online (Sandbox Code Playgroud)
src …
PHP和Mongo正常工作,但php5-mongo扩展需要更新.
目前它是版本1.4.5,版本1.5.x需要与最新的https://github.com/doctrine/mongodb/兼容
运行不会更新版本.
sudo apt-get install php5-mongo
Run Code Online (Sandbox Code Playgroud)
附加信息
如何更新扩展程序?pecl是否需要执行更新?
使用createFormBuilder在Symfony2中创建了一个表单,它不需要实体,仅用于搜索.需要更改表单名称和输入名称.
$form = $this->createFormBuilder(null, array(
'action' => $this->generateUrl('route'),
'method' => 'GET',
'csrf_protection' => false,
'attr' => array('name' => 'search'),
))
->add('query', 'text', array(
'required' => false,
))
->getForm();
Run Code Online (Sandbox Code Playgroud)
呈现的HTML如下:
<form class="" method="GET" action="route" name="form">
<div class="errors"></div>
<div id="form" name="search">
<div>
<label for="form_query">Query</label>
<input id="form_query" type="text" value="king" name="form[query]">
</div>
</div>
<p>
</form>
Run Code Online (Sandbox Code Playgroud)
如何更改表单名称?目前它是形式,这意味着div id也是形式,可以改为搜索吗?
其次输入应该有一个名称作为查询而不是形式[查询]?
我已经看过有关使用没有实体的表单的文档,但我看不到如何更改这些属性.
最终结果应该是:
<form class="" method="GET" action="route" name="search">
<div class="errors"></div>
<div id="search">
<div>
<label for="search_query">Query</label>
<input id="search_query" type="text" value="king" name="query">
</div>
</div>
<p>
</form>
Run Code Online (Sandbox Code Playgroud) 如何配置Symfony2 Validator以使用Core之外的注释?
在核心中,您将执行以下操作:
$container->loadFromExtension('framework', array(
'validation' => array(
'enable_annotations' => true,
),
));
Run Code Online (Sandbox Code Playgroud)
摘自:http://symfony.com/doc/2.0/book/validation.html#configuration
现在要进行验证工作,规则是在方法loadValidatorMetadata(ClassMetadata $ metadata)中设置的,它可以工作,但我更喜欢注释.
示例具有验证注释的实体和用于设置验证规则的备用php方法:
<?php
namespace Foo\BarBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass="Foo\BarBundle\Entity\Repository\FooRepository")
* @ORM\Table(name="foo")
*/
class Foo {
/**
* @ORM\Column(type="integer", name="bar")
* @Assert\Type(
* type="integer",
* message="The value {{ value }} is not a valid {{ type }}."
* )
*/
protected $bar;
public static function loadValidatorMetadata(ClassMetadata $metadata)
{
$metadata->addPropertyConstraint('bar', new Assert\Type(array(
'type' => …Run Code Online (Sandbox Code Playgroud) 在从 PHP 5.5 升级到 PHP 7.0 的过程中,Symfony 项目遇到了问题。
已遵循http://www.doctrine-project.org/2016/06/09/odm-1-1-0-and-1-0-6.html中的步骤,以确保 mongo-ext 符合原则。没有发生兼容性升级。
但出现以下异常:
PHP Fatal error: Cannot use 'String' as class name as it is reserved in
... vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/Mapping/Annotations/String.php on line 26
Run Code Online (Sandbox Code Playgroud)
该问题很可能与composer.json 中的配置问题有关
哪个要求阻止作曲家更新安装正确的原则/mongodb?
PHP 版本 7.0.13-0ubuntu0.16.04.1 (cli) (NTS)
{
"name": "foo/bar",
"license": "proprietary",
"type": "project",
"autoload": {
"psr-4": {
"": "src/"
},
"classmap": [
"app/AppKernel.php",
"app/AppCache.php"
]
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"require": {
"php": "^7.0",
"symfony/symfony": "3.2.*",
"doctrine/orm": "^2.5",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-cache-bundle": …Run Code Online (Sandbox Code Playgroud)