在我的注册表单中,我有一个复选框"我接受条款",并希望将"条款"一词链接到我的条款页面.
有没有办法使用路由添加表单标签的链接?(最好不要在表格中注入容器)
有一些问题在symfony 2.1网站上更改区域设置.
我找不到一种能够在不使用_locale每条路线的情况下更改lang的方法.我知道这是违反基本规则的,但是这个内容例如不会被引擎索引,因为它只是成员.
通常,我想要一个简单的方法来更改请求(BC版本2.1)或会话上的区域设置,但无法弄清楚如何顺利地执行此操作.我也想避免使用Listener.
config.yml文件:
framework:
translator: { fallback: %locale% }
session:
Run Code Online (Sandbox Code Playgroud)
routing.yml文件:
route_change_lang:
pattern: /changelang/{newlang}
defaults: { _controller: AcmeCoreBundle:Default:switchLanguage, newlang: en }
requirements:
newlang: en|fr|de
Run Code Online (Sandbox Code Playgroud)
更新路由器区域设置的简单操作:
public function switchLanguageAction($newlang)
{
$request = $this->getRequest();
$request->setLocale($newlang);
$referer_url = $this->get('request')->headers->get('referer');
if ($referer_url != null) {
return $this->redirect($referer_url);
} else {
return $this->redirect($this->generateUrl('route_home'));
}
}
Run Code Online (Sandbox Code Playgroud)
问题是什么?我想它与主config.yml文件中设置的default_locale有关,但是文档不是很清楚,任何帮助/提示都表示赞赏
我想知道是否有办法在Command中找到标记服务.
我有一个扩展的Command ContainerAwareCommand,我能够访问容器,但我希望得到所有由特定标签标记的服务.例如,我想有类似的东西:
$this->getContainer()->findTaggedServiceIds('smtp.transport')
Run Code Online (Sandbox Code Playgroud) // src/Acme/DemoBundle/Tests/Controller/DemoControllerTest.php
namespace Acme\DemoBundle\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class DemoControllerTest extends WebTestCase
{
public function testIndex()
{
$client = static::createClient();
$crawler = $client->request('GET', '/demo/hello/Fabien');
$this->assertGreaterThan(0, $crawler->filter('html:contains("Hello Fabien")')->count());
}
}
Run Code Online (Sandbox Code Playgroud)
这在我的测试中工作正常,但我想在控制器中也使用这个爬虫.我该怎么做?
我做路线,并添加到控制器:
<?php
// src/Ens/JobeetBundle/Controller/CategoryController
namespace Acme\DemoBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Acme\DemoBundle\Entity\Category;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class CategoryController extends Controller
{
public function testAction()
{
$client = WebTestCase::createClient();
$crawler = $client->request('GET', '/category/index');
}
}
Run Code Online (Sandbox Code Playgroud)
但这会给我带来错误:
Fatal error: Class 'PHPUnit_Framework_TestCase' not found in /acme/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Test/WebTestCase.php on line 24
Run Code Online (Sandbox Code Playgroud) 我有一个自定义表单字段类型和相关的表单主题.在一个页面上,我有很多这些领域,但我特别想改变其中一个领域.
有没有办法以不同方式对同一类型(和同一文件)中的某些字段进行主题化?
一个简化的例子:
form_fields.html.twig :(本地主题文件)
{% block my_dropdown_row %}
<div>
{{ form_label(form) }}
{{ form_widget(form) }}
{{ form_errors(form) }}
</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
在我的表单模板中(所有这些字段具有相同的类型 - my_dropdown
{{ form_row(form.selectionA) }}
{{ form_row(form.selectionB) }}
{{ form_row(form.selectionC) }}
{{ form_row(form.final_selection) }}
Run Code Online (Sandbox Code Playgroud)
如何将最终字段的样式与其他字段区分开来?这些小部件中有很多代码,因此重复性越低越好.
我想将symfony2.1用于新项目.我尝试用composer安装symfony2.但是存在多个错误/问题,因此我也以粗体字体样式对每个问题提出疑问.有时我不知道我是否以正确的方式做到了.
我想使用稳定版本,所以我选择了2.1.0版本而不是dev/master.
php composer.phar create-project symfony/framework-standard-edition symfony v2.1.0
Run Code Online (Sandbox Code Playgroud)
结果是这样的:
Installing symfony/framework-standard-edition (v2.1.0)
- Installing symfony/framework-standard-edition (v2.1.0)
Downloading: 100%
Created project in symfony
Loading composer repositories with package information
Installing dependencies from lock file
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for symfony/symfony == 2.1.9999999.9999999-dev -> satisfiable by symfony/symfony 2.1.x-dev.
- Can only install one of: symfony/symfony dev-master, symfony/symfony 2.1.x-dev.
- Installation request for symfony/symfony == 9999999-dev -> satisfiable …Run Code Online (Sandbox Code Playgroud) 我有一个Doctrine2监听器和过滤器,可以过滤掉任何未经批准的/草案实体,它可以在应用它的实体上正常工作,但是,我不知道如何使它适用于它的关系.
让我们说实体被称为类别,然后我有与该类别相关的产品,当我findBy()为产品做一个时,我需要查询来检查它们所涉及的类别是否被批准.
select * from products p
left join category c on p.category_id = c.id
where p.id = 5and c.approved = true
粗体位是需要由我的过滤器或等效物注入的.
我该如何实现呢?
到目前为止,我有一个子查询作为过滤器中的一部分注入,但这似乎是地狱般的,我认为必须有一个更好的方法:
class ApprovableFilter extends SQLFilter
{
protected $listener;
protected $entityManager;
public function addFilterConstraint(ClassMetadata $targetEntity, $targetTableAlias)
{
$config = $this->getListener()->getConfiguration($this->getEntityManager(), $targetEntity->name);
/* this bit works fine for the category */
if (isset($config['approvable']) && $config['approvable']) {
$column = $targetEntity->columnNames[$config['fieldName']];
return $targetTableAlias.'.'.$column.' = true';
}
/* this bit works for products.. but seems like a pretty …Run Code Online (Sandbox Code Playgroud) 我只是将我的Symfony 2.0.12项目升级到2.1.我还安装了FosUserBundle,但是当我运行命令时
php composer.phar update
Run Code Online (Sandbox Code Playgroud)
然后作曲家输出一个错误:
Loading composer repositories with package information
Updating dependencies
Writing lock file
Generating autoload files
PHP Fatal error: Declaration of User\UserBundle\Form\Type\RegistrationFormType::buildForm() must be compatible with that of Symfony\Component\Form\FormTypeInterface::buildForm() in /home/mark/dev/proj/src/User/UserBundle/Form/Type/RegistrationFormType.php on line 38
Fatal error: Declaration of User\UserBundle\Form\Type\RegistrationFormType::buildForm() must be compatible with that of Symfony\Component\Form\FormTypeInterface::buildForm() in /home/mark/dev/proj/src/User/UserBundle/Form/Type/RegistrationFormType.php on line 38
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-update-cmd event terminated with an exception
Run Code Online (Sandbox Code Playgroud)
它说的是我以前的RegistrationFormType与新的Symfony 2.1表单界面不兼容.
我的composer.json
// ...
"friendsofsymfony/user-bundle": "*",
//...
Run Code Online (Sandbox Code Playgroud)
我的RegistrationFormType.php
<?php
namespace User\UserBundle\Form\Type;
use Symfony\Component\Form\FormBuilderInterface;
use …Run Code Online (Sandbox Code Playgroud) 我有一个为Symfony 2.0编写的应用程序,我已经开始将它迁移到Symfony 2.1中.我已成功使用composer安装了所有依赖项,但脚本失败了......
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap handling the post-update-cmd event terminated with an exception
[RuntimeException]
An error occurred when generating the bootstrap file.
Run Code Online (Sandbox Code Playgroud)
任何线索?我完全迷失了,而且我用谷歌搜索了它,但我只在一个论坛上发现了一个帖子,其中的人和我有同样的问题......
我被卡住了.用网络搜索地狱,无法找到答案.
我多年来一直在使用Ansible,但总是使用静态库存.针对不同的环境,如分期和生产区分开来,我用不同的静态清单文件,staging并production分别.当我需要配置登台服务器时,我会这样做:
ansible-playbook site.yml -i staging
Run Code Online (Sandbox Code Playgroud)
当我想为生产做同样的事情时,我会这样做:
ansible-playbook site.yml -i production
Run Code Online (Sandbox Code Playgroud)
分段和生产都需要具有不同值的变量,所以我有group_vars/staging和group_vars/production.一切都很好,并根据最佳实践.
现在,我需要在AWS中配置EC2实例.我正在使用此AWS指南.我有一个有两个剧本的剧本.第一个是localhost在AWS中运行,创建/查找所需的EC2实例,并使用填充组add_host.第二个游戏使用该组来对抗在第一个游戏中发现的EC2实例.全部根据该指南.
除了一件事,这一切都很有效.我不知道如何指定要配置的环境,因此未加载所需的变量group_vars/(staging|production).基本上,我想要的是类似于-i (staging|production)我多年来使用静态库存的东西,但似乎现在使用-i没有意义,因为库存是动态的.我希望有一种方法可以从任何一个group_vars/staging或group_vars/production基于ansible-playbook我运行它时传递给的参数加载变量.
我怎么做?什么是最佳做法?
symfony ×9
symfony-2.1 ×7
php ×3
ansible ×1
command ×1
composer-php ×1
doctrine-orm ×1
forms ×1
sonata-admin ×1
testing ×1
twig ×1
unit-testing ×1