我正在使用FOSUserBundle来验证我的用户.
我正在尝试获取Controller内的用户对象来注册一个行程,我应该在保存之前将用户对象添加到此Trip.
我没有找到如何做到这一点因为我在symfony doc中找到它的下一个方法:
$user = $this->container->get('security.context')->getToken()->getUser();
Run Code Online (Sandbox Code Playgroud)
将用户名呈现为字符串,但我需要整个对象.
目前,我使用此方法,但它无法正常工作.
$username = $this->container->get('security.context')->getToken()->getUser();
$em = $this->container->get('doctrine')->getEntityManager();
$user = $em->getRepository('SiteUtilisateurBundle:Utilisateur')->find($username);
Run Code Online (Sandbox Code Playgroud)
我怎样才能正确地做到这一点?
我需要从config.yml解析一些配置参数,例如启用的语言.但是当我尝试使用普通的symfony方法时:$this->container->get('my_params');它失败了,因为我的管理类扩展了Sonata\AdminBundle\Admin\Admin类而不扩展Symfony\Component\DependencyInjection\ContainerAware类.
请问,如何在奏鸣曲Admin类中获取容器?
现在我通过重写奏鸣曲管理类来解决这个问题,使其扩展ContainerAware.
我需要安装SonataUserBundle才能安装SonataNewsBundle.
我一步一步地遵循安装教程,但是我收到了这个错误:
./app/console sonata:easy-extends:generate SonataUserBundle
[InvalidArgumentException]
Bundle "ApplicationSonataUserBundle" does not exist or it is not enabled.
Run Code Online (Sandbox Code Playgroud)
捆绑包尚未生成.这个命令应该做到!
任何人都知道如何解决这个问题?
我按照这个文档来安装SonataMediaBundle但是我收到了这个错误:
PHP Fatal error: Class 'Application\Sonata\MediaBundle\ApplicationSonataMediaBundle' not found in /var/www/znata.com/app/AppKernel.php on line 47
Run Code Online (Sandbox Code Playgroud)
使用sonata命令后生成应用程序:
php app/console sonata:easy-extends:generate SonataMediaBundle
Run Code Online (Sandbox Code Playgroud)
新目录生成于:
apps/Application/Sonata/MediaBundle
Run Code Online (Sandbox Code Playgroud)
一切都已完成,但当我在AppKernel.php中注册生成的应用程序时,我收到了该错误.
public function registerbundles()
{
return array(
...
new Application\Sonata\MediaBundle\ApplicationSonataMediaBundle(),
...
);
}
Run Code Online (Sandbox Code Playgroud)
你知道如何解决这个问题吗?
我已经安装了清漆并且准备了设置它的确切指令,但是,它没有按预期工作.
我的/ etc/default/varnish设置是:
DAEMON_OPTS="-a :80 \
-T localhost:1234 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"
Run Code Online (Sandbox Code Playgroud)
我的/etc/varnish/default.vlc设置是
backend default {
.host = "localhost";
.port = "8080";
}
Run Code Online (Sandbox Code Playgroud)
我的apache port.conf设置是:
NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我用Apache 2.4.10运行ubuntu 15.04.当我开始清漆并检查过程时,我得到了休息:
0:00 /usr/sbin/varnishd -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
Run Code Online (Sandbox Code Playgroud)
似乎监听地址或管理界面都不像/etc/varnish/default.vcl中设置的那样工作.我的虚拟机都不能正常工作.我怎么解决这个问题?
我需要在ubuntu机器上安装PDO_OCI,没有我可以用apt-get安装的默认包.
有很多教程展示了如何做到这一点,但是当我遵循它们时,我遇到了与编译相关的问题(configure,make,...)
我在这做了什么:
我按照本教程安装了即时客户端
安装oci8
pecl install oci8
Run Code Online (Sandbox Code Playgroud)
我收到错误:
错误:找不到oci.h
安装PDO_OCI
mkdir -p /tmp/pear/download/
cd /tmp/pear/download/
pecl download pdo_oci
phpize
./configure –with-pdo-oci=instantclient,/usr,11.2
Run Code Online (Sandbox Code Playgroud)
错误:
找不到pdo_driver.h ...
请问您有任何在UBUNTU 12.04上完美运行的严肃教程吗?
在提出这个问题之前,我在谷歌和世界各地搜索了几个小时试图增加Varnish 4和Nginx之间的连接超时,但没有找到解决方案.
所以这是我的清漆配置:
backend web1 {
.host = "192.168.1.21";
.port = "80";
.probe = {
.request =
"HEAD / HTTP/1.1"
"Host: localhost"
"Connection: close";
.timeout = 1s;
.interval = 5s;
.window = 5;
.threshold = 3;
}
.connect_timeout = 300s;
.between_bytes_timeout = 300s;
}
Run Code Online (Sandbox Code Playgroud)
这是Nginx配置:
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 0; # wait for 5 minutes before timeout the request
# proxy_connect_timeout 60s;
# proxy_send_timeout 300s;
# proxy_read_timeout 300s;
fastcgi_read_timeout 300s; …Run Code Online (Sandbox Code Playgroud) 我需要以symfony2形式级联验证,除非指定的组.
这里symfony团队告诉有效约束https://github.com/symfony/symfony/issues/4893不支持组选项
怎么做 ?
细节:
我有一个User Entity具有address属性,它是Address Entity的外键.此外,我有实体称为业务具有用户作为属性和地址属性.我需要验证用户的地址,但是,如果用户是商家的财产,则无需验证它...
架构
Class Address {
...
}
Class User {
/**
* @Assert\Valid(groups={"user"})
*/
private $address;
}
Class Business {
/**
* @Assert\Valid(groups={"business"})
*/
private $user;
/**
* @Assert\Valid(groups={"business"})
*/
private $address;
}
Run Code Online (Sandbox Code Playgroud)
所以我需要验证用户内部的地址仅用于用户表单,而不是用于业务.
谢谢
我需要加载xml文件并将它们存储到数据库中.我使用Symfony 2.1作为框架,这个framweork附带了一个很棒的工具 - 爬虫.它使XPATH变得容易.
如何使用此爬网程序加载XML文件?
你有没有一个很好的教程展示如何做到这一点?
我使用SonataMediaBundle上传了一些文件,但是当我想添加另一个时,我收到了这个错误.
你知道吗?
这是堆栈错误:
in /var/www/znata.com/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php at line 107 -+
public function guess($path)
{
if (!is_file($path)) {
throw new FileNotFoundException($path);
}
if (!is_readable($path)) {
Run Code Online (Sandbox Code Playgroud)
谢谢
我想检查我的模板中的表单是否是新的,例如 symfony 1.4 中的 $form->isNew() ,但我没有找到解决方案。
目前,我正在使用这种技术:
{% null != entity.getId %}
Run Code Online (Sandbox Code Playgroud)
它有效,但是还有其他更干净的解决方案吗?
我创建了一个名为PostalAddressBundle的新包,我在其中创建了一个名为ss_postal_address的服务.一切都很好.但我决定将捆绑包重命名为AddressBundle而不是PostalAddressBundle,我重命名了所有命名空间以及与之相关的所有内容.一切正常,但不是服务(ss_postal_address).
我清除了缓存,但没有任何反应..
这是services.xml文件的内容:
<parameters>
<parameter key="ss_address.entity.address.class">Skonsoft\AddressBundle\Entity\Address</parameter>
<parameter key="ss_address.form.type.address.class">Skonsoft\AddressBundle\Form\Type\AddressType</parameter>
</parameters>
<services>
<service id="ss_address.form.type.address" class="%ss_address.form.type.address.class%">
<argument>%ss_address.entity.address.class%</argument>
<tag name="form.type" alias="ss_postal_address" />
</service>
</services>
Run Code Online (Sandbox Code Playgroud)
你知道如何解决这个问题吗?
谢谢
symfony ×7
sonata-admin ×4
symfony-2.1 ×4
apache2.4 ×1
nginx ×1
oracle ×1
pdo ×1
php ×1
symfony-2.3 ×1
systemd ×1
twig ×1
ubuntu ×1
ubuntu-15.04 ×1
validation ×1
varnish ×1
varnish-4 ×1
varnish-vcl ×1
web-crawler ×1