我在Docker容器中运行Symfony3应用程序.我创建了一个CommonBundle包含所有资源(js,css,images).此资源符号链接到另一个路径,如下所示:
$ docker exec -u www-data -it dockeramp_php_1 ls -la oneview_symfony/src/CommonBundle/Resources/public
total 8
drwxrwsr-x 2 www-data www-data 4096 Feb 23 21:09 .
drwxr-sr-x 5 www-data www-data 4096 Feb 23 20:54 ..
lrwxrwxrwx 1 root www-data 32 Feb 23 21:09 css -> /var/www/html/public_html/styles
lrwxrwxrwx 1 root www-data 32 Feb 23 21:09 images -> /var/www/html/public_html/images
lrwxrwxrwx 1 root www-data 28 Feb 23 21:08 js -> /var/www/html/public_html/js
Run Code Online (Sandbox Code Playgroud)
该目录oneview_symfony/web确实存在且可写,www-data如下所示:
$ docker exec -u www-data -it dockeramp_php_1 ls -la …Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目,我正在使用Symfony2(最新)和SonataAdmin.我需要通过记录来记录用户操作的日志:
我发现在KnpBundles和谷歌没有成功,可以给我一些提示或想法吗?或者如果有人这样做之前给我一些代码作为起点?请记住,我正在使用SonataAdmin,这有点复杂.
我正在使用任务验证项目架构php app/console doctrine:schema:validate(代码不是我的,我只是想让它正常工作)。我看到的常见消息之一是:
- 字段 Mapyet\AfiliadoBundle\Entity\Widget#negocio 位于双向关系的拥有方,但目标实体 Mapyet\AfiliadoBundle\Entity\Negocio# 上指定的mappedBy关联不包含所需的“inversedBy”属性。
这是$negocio在实体中定义的方式Widget.php:
/**
* @ORM\ManyToOne(targetEntity="Negocio", mappedBy="widget")
*/
private $negocio;
Run Code Online (Sandbox Code Playgroud)
这是$widget在实体中定义的方式Negocio.php:
/**
* @ORM\OneToMany(targetEntity="Widget", inversedBy="negocio")
*/
private $widget;
Run Code Online (Sandbox Code Playgroud)
这个定义有什么问题?
我最近了解到在我的PHP应用程序中使用依赖注入(DI)的优点.
但是,我仍然不确定如何为依赖项创建容器.以前,我使用框架中的容器,我想了解他是如何做后面的事情并重现它.
例如:
来自Zend 2的容器.我理解容器使类动态化,他从一开始就不必知道它们,他检查他是否已经在他的注册表中有该类,如果他没有检查该类是否存在,什么参数有内部构造函数,并把它放在他自己的注册表中,所以下次可以从那里采取它,实际是做一切动态,它正在完成自己的注册表,所以我们不必处理任何一旦我们实现容器作为即使我们只是上课,他也可以像我们想要的那样上课.
此外,如果我想要getInstanceA需要B和B需要CI了解他做这个递归,他去实例化C然后B,最后A.
所以我理解大局以及他想做什么,但我不太确定如何实现它.
我有一个Twitter Bootstrap模式,我在其中显示一些表单元素.我正在尝试清理BS上隐藏/关闭的所有表单元素内容但是我做错了,因为下面的代码都不起作用:
$('body').on('hidden.bs.modal', '.modal', function () {
$(this).removeData('bs.modal');
});
$('.modal').on('hide.bs.modal', function () {
$('.modal').removeData();
})
$("#addNorma").on('hidden.bs.modal', function () {
$(this).data('bs.modal', null);
});
Run Code Online (Sandbox Code Playgroud)
也许这种"破坏"是针对别的东西,我不明白.无论如何这里是一个小提琴,我显示问题:
我想避免这种行为,怎么样?
我正在使用此捆绑包通过表单上传文件.这就是我所做的.在我正在使用捆绑包的Twig模板中
<form action="{{ path('guardar-natural') }}" method="POST" class="form-horizontal" role="form" id="registroNatural" {{ form_enctype(form) }}>
{{ form_widget(form.documento_rif) }}
<button type="submit" class="btn btn-primary" id="btnEnviarRegistro">{{ 'registration.submit'|trans }}</button>
</form>
Run Code Online (Sandbox Code Playgroud)
在表单类中:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('documento_rif', 'vich_file', array(
'required' => true,
'mapping' => 'recaudos',
'allow_delete' => true,
'download_link' => true,
'label' => false,
))
->add('usuario', new RegistrationForm());
}
Run Code Online (Sandbox Code Playgroud)
在字段所在的实体中:
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* @Vich\Uploadable
*/
class Natural
{
/**
* @Vich\UploadableField(mapping="recaudos", fileNameProperty="documentoRIF")
* @var File $imageFile
*/
protected $imageFile; …Run Code Online (Sandbox Code Playgroud) 我正在寻找实现Ajax调用的"自动"路由限制的最佳方法.现在我做的如下:
/**
* @Secure(roles="IS_AUTHENTICATED_FULLY")
* @Route("/someRoute", name="someRoute")
* @Method("POST")
*/
public function eliminarFacturasAction(Request $request)
{
$response['success'] = false;
$status = 400;
if ($request->isXmlHttpRequest()) {
// needs to set $response values and $status=200 all the time
} else {
// needs to handle the exception and return Json response
}
return new JsonResponse($response, $status ?: 200);
}
Run Code Online (Sandbox Code Playgroud)
为了避免这种情况,我可以使用它吗?
@Route("/someRoute",
name="routeName",
condition="request.headers.get('X-Requested-With') == 'XMLHttpRequest'"
)
Run Code Online (Sandbox Code Playgroud)
我使用jQuery作为JS框架所以XMLHttpRequest不会成为一个问题.如果没有通过Ajax调用执行路由,将触发什么样的异常?我可以抓住它并向用户显示消息吗?或者显示某种404页面?
我已经在CentOS 6.6中安装了RabbitMQ Server,我也安装并启用了管理插件.如果我运行命令rabbitmq-plugins list这是我在控制台得到的:
Configured: E = explicitly enabled; e = implicitly enabled
| Status: * = running on rabbit@pdone-staging
|/
[e*] amqp_client 3.5.0
[ ] cowboy 0.5.0-rmq3.5.0-git4b93c2d
[ ] eldap 3.5.0-gite309de4
[e*] mochiweb 2.7.0-rmq3.5.0-git680dba8
[ ] rabbitmq_amqp1_0 3.5.0
[ ] rabbitmq_auth_backend_ldap 3.5.0
[ ] rabbitmq_auth_mechanism_ssl 3.5.0
[ ] rabbitmq_consistent_hash_exchange 3.5.0
[ ] rabbitmq_federation 3.5.0
[ ] rabbitmq_federation_management 3.5.0
[E*] rabbitmq_management 3.5.0
[e*] rabbitmq_management_agent 3.5.0
[ ] rabbitmq_management_visualiser 3.5.0
[ ] rabbitmq_mqtt 3.5.0
[ ] rabbitmq_shovel 3.5.0
[ …Run Code Online (Sandbox Code Playgroud) 也许你可能会注意到我之前的帖子,我正在使用SF2.0.x应用程序到新的SF2.7.现在我有很多,NOTICE他们不会影响应用程序的功能,但它会这样做,我想防止这种情况.我已阅读SF Book,路由组件以及@ Route和@Method注释中的路由章节,但找不到任何有用的解决方法.所以我需要一些人的帮助.现在,路线看起来像下面的那种(XML格式):
<route id="PDOneBundle_repproject_process" path="/project/{page}/{action}">
<default key="_controller">PDOneBundle:ProjectDetail:process</default>
<requirement key="page">\w+</requirement>
<requirement key="action">add|update|delete</requirement>
<requirement key="_format">html</requirement>
<requirement key="_method">POST|GET</requirement>
</route>
Run Code Online (Sandbox Code Playgroud)
以下信息是NOTICE我得到的:
DEPRECATED - 自版本2.2起不推荐使用"_method"要求,将在3.0中删除.请改用setMethods()方法或路径定义中的"methods"选项.
现在定义路线的正确方法是什么?
我在这里阅读了一些文档,但仍然不清楚如何编写和使用自定义Monolog处理程序和通道.让我解释一下我想要实现的目标.我有一个自定义函数,我希望将该日志记录到一个名为的文件中custom.log.我通过在config.yml文件中设置这个来启用Doctrine登录到另一个文件:
monolog:
handlers:
#Logs Doctrine to a different channel
doctrine:
level: debug
type: stream
path: "%kernel.logs_dir%/doctrine.log"
channels: [doctrine]
Run Code Online (Sandbox Code Playgroud)
我如何实现同样的目标custom.log?
php ×7
symfony ×7
jquery ×2
ajax ×1
bundle ×1
css ×1
docker ×1
doctrine-orm ×1
entity ×1
frameworks ×1
html ×1
javascript ×1
logging ×1
monolog ×1
rabbitmq ×1
security ×1
sonata-admin ×1
symfony-2.6 ×1
symfony-2.7 ×1
symlink ×1