我们正在构建一个使用 Oracle 数据库的 Symfony2 应用程序。数据库中的所有数据编码为WE8ISO8859P15(iso-8859-1),所有网站编码为utf-8。
有没有办法把从数据库接收到的数据全部转成utf8,把发到DB的数据全部转成iso-8859-1,而不是把网站转成iso8859-1?也许使用 Doctrine 事件订阅者?如果是这样,我应该拦截哪些事件?
最佳答案
我用 MSSQL 实例解决了一个类似的问题,用于从 utf8 转换为 latin1,反之亦然。我执行以下步骤:
config.yml 中做)这是他的代码:
DBAL 自定义类型
<?php
namespace Acme\DemoBundle\Doctrine\Type;
use Doctrine\DBAL\Types\StringType;
use Doctrine\DBAL\Platforms\AbstractPlatform;
class Utf8String extends StringType
{
/**
* {@inheritdoc}
*/
public function convertToDatabaseValue($value, AbstractPlatform $p)
{
// convert from utf8 to latin1
return mb_convert_encoding($value, 'ISO-8859-1', 'UTF-8');
}
/**
* {@inheritdoc}
*/
public function convertToPHPValue($value, AbstractPlatform $p)
{
// convert from latin1 to utf8
return mb_convert_encoding($value, 'UTF-8', 'ISO-8859-1');
}
}
bundle 初始化
<?php
namespace Acme\DemoBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
use Doctrine\DBAL\Types\Type;
class AcmeDemoBundle extends Bundle
{
public function boot() {
if (!Type::hasType('utf8string'))
{
Type::addType('utf8string', 'Acme\DemoBundle\Doctrine\Type\Utf8String');
$em = $this->container->get('doctrine.orm.em_my_sqlserver_entity_manager');
$conn = $em->getConnection();
$conn->getDatabasePlatform()->registerDoctrineTypeMapping('Utf8String', 'utf8string');
}
}
}
映射实体示例
<?php
namespace Acme\DemoBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
*
* @ORM\Table(name="VEHICLE")
* @ORM\Entity()
*/
class Vehicle
{
/**
* @ORM\Id
* @ORM\Column(name="VEHICLE_NAME", type="utf8string", length=16, nullable=false)
*/
private $name;
/**
* @var integer
*
* @ORM\Column(name="ID_VEHICLE", type="integer", nullable=true)
*/
private $idVehicle;
....
}
希望这对您有所帮助,也希望您能找到更好的解决方案!!!
关于php - Symfony2+学说 : How to convert iso8859-1 to utf-8 and viceversa?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28855399/
我真的是JavaScript的新手,我无法找到关于这方面的一些教程。如果有,请告诉我阅读它们。我想做的是将变量从我的PHPController传递到.js文件-我想填充Highcharts变量。我知道我可以发送响应,但我还需要加载一个模板。这是模板:...{%blockbody%}Months//ThisistheChart:{%blockjavascript%}{%endblock%}{%endblock%}.js文件名为month.js$(function(){$('#container').highcharts({chart:{type:'bar'},title:{text:'B
在某些页面上,我在引导模式中使用表单。我使用Ajax提交表单,它在Controller中得到验证。大多数用户会正确填写表单,但如果验证失败,表单将重新呈现并发送回给用户。我一点也不喜欢这样,但我找不到更好的方法,因为我无法访问字段的验证错误。有人有更好的方法来实现以JSON发送回验证错误吗? 最佳答案 我自己创建了一个函数publicfunctiongetFormErrors(Form$form){$errors=$form->getErrors();foreach($form->all()as$child){foreach($ch
我可以像这样轻松地将CSS文件包含到我的twig模板中:{%blockstylesheets%}{%endblock%}但是对于我的JavaScript文件{%blockjavascripts%}{%endblock%}该方法不起作用。我也尝试过使用assetics,但这也没有用。 最佳答案 我推荐Assetic方法。这并不简单,但它会给您带来巨大的好处。首先,将您的JS嵌入到这样的模板中:{%blockmy_javascripts%}{%javascripts'@FooBarBundle/Resources/public/js/f
在管理类中:protectedfunctionconfigureFormFields(FormMapper$formMapper){$formMapper->add('name','text')->add('description','text');}我不知道如何在“名称”之前添加javascript,你能帮我吗? 最佳答案 为我工作:在管理类src\PP\TestBundle\TestAdmin.phppublicfunctionconfigure(){$this->setTemplate('edit','PPTestBundle
是否可以公开Symfony2验证规则(对于给定的实体)?我找不到这样的东西。我正在尝试使用DRY方法进行客户端验证(使用backbone.js)。bundle或任何小费之类的东西会有所帮助。Hereis组件验证器。一种可能性是:使用Symfony2标准方式定义服务器端验证规则。示例(YAML,取自他们的网站):#src/Acme/BlogBundle/Resources/config/validation.ymlAcme\BlogBundle\Entity\Author:properties:name:-NotBlank:~使/author/rules返回一个JSON对象,该对象将字段
$rootNode=new\SimpleXMLElement("");$itemNode=$rootNode->addChild('item');$itemNode->addChild('itemCode','mk');$itemNode->addChild('itemName','orange');$itemNode=$rootNode->addChild('item');$itemNode->addChild('itemCode','ap');$itemNode->addChild('itemName','apple');$itemNode=$rootNode->addChild(
我正在通过cURL调用一个API方法,我得到了这个响应:75080000002s5siAAAqueryUser00580000008ReolAAC2015-06-23T13:03:01.000Z2015-06-23T13:03:01.000ZOpenParallelCSV000000034.00000我想以一种简单的方式访问|解析结果,但我不知道是应该反序列化XML还是尝试使用一些PHP原生XML函数来读取它。那么关于这个第一个疑问的想法?如果反序列化XML更好,那么我已经阅读了thispost“在Symfony2中使用JMSSerializerBundle反序列化XML”如果我需要一
如何向外部API发送POST请求并解析其XML响应?通常只使用php和xml我会做somethinglike。但是我不确定如何使用Symfony来做同样的事情。另请注意,xml文件中的内容是动态的,如“Itemnumber”、“quantity”等更多信息:我正在尝试将xml数据发送到我们的第三方客户端系统(他们只使用XML,因此没有JSON响应)并解析此XML响应并将其显示给我们的客户。因为客户请求是动态的,所以.xml文件中的内容每次都会更改。所以我需要弄清楚加载此动态.xml文件。使用POST建立连接。读取我从客户那里收到的ParseXml数据(这很容易完成)。
对于这些类型的文件中的每一种,是否有兴趣使用XML而不是YAML:配置安全路由服务翻译我想在全局范围内询问XMLvsYAML和JSON,但我会坚持这些主题:) 最佳答案 在我公司的项目中,我们针对上述每一点使用YAML,因为它更具可读性。最易读。最易读。编辑:我能想象的唯一抽象情况是使用XML而不是YAML-可能是针对一些动态文件编写器,因为使用操作节点更容易SimpleXML或类似的东西。例如,如果您需要定义一些配置文件、在测试中构建模式等...但很难想象另一种情况。另一个编辑:既然我的回答被接受了,我不能不同意m2mdas-正如
最近开始玩S2,很棒的东西!前段时间开始了在线Symfony2Blogtutorial,但是我被困在了DoctrineDataFixturesgeneration的页面上,这是我在控制台中执行phpapp/consoledoctrine:fixtures:load时收到的消息:Fatalerror:Class'Doctrine\Bundle\DoctrineBundle\Command\DoctrineCommand'notfoundinC:\xampp\htdocs\blog-sf2\vendor\bundles\Doctrine\Bundle\FixturesBundle\Comm