我的表单中有一个隐藏的输入字段.我注意到如果javascript更改了该字段的值,然后用户刷新页面,则在页面重新加载时将设置相同的值.从我所看到的,这只发生在Firefox中.
我通过添加autocomplete="off"
隐藏的输入解决了这个不需要的行为,但W3C不喜欢这个解决方案,如果我验证页面,我得到错误:
Attribute autocomplete not allowed on element input at this point.
Run Code Online (Sandbox Code Playgroud)
显然,该autocomplete
属性仅适用于特定输入 - 请参见此处.
那么有什么解决方案可以满足W3C和Firefox的需求吗?
我有一个自定义文件输入:
<div id="wrapper">
<span id="fake-text-input"></span>
<button id="select-a-file"></button>
<input id="hidden-file-input" type="file" />
</div>
Run Code Online (Sandbox Code Playgroud)
该input[type="file"]
是隐藏的(display: none
),并选择一个文件被监听\触发处理click
和change
事件.
我也想支持文件丢弃.drop
当文件被丢弃时,我能够听到事件,#fake-text-input
但我不知道如何将drop
事件转发给input[type="file"]
..甚至可能吗?
我对文件输入不透明技巧不感兴趣:)
$('body').on('drop', '#wrapper', function(e) {
var file = e.originalEvent.dataTransfer.files[0];
// I have the file.. now what?
});
Run Code Online (Sandbox Code Playgroud) 我有一个基于Symfony2 + Doctrine2构建的应用程序,我想为(使用phpunit)创建一些测试.
例如,如果我想针对数据库中的记录测试唯一的验证器,我想创建一个我可以使用的记录,但是在测试之后我不再需要它了.那么有没有办法创建临时(或虚拟)灯具或我必须手动创建和删除它们?
我的数据库结构如下:
工作:
评论:
WorkComment与Work的ManyToOne关系:
@ManyToOne(targetEntity="Work", inversedBy="comments")
Run Code Online (Sandbox Code Playgroud)
Work与WorkComment有一个OneToMany关系:
@OneToMany(targetEntity="WorkComment", mappedBy="work")
Run Code Online (Sandbox Code Playgroud)
问题是Doctrine在更新架构时给了我这个错误:
[Doctrine\ORM\Mapping\MappingException]
It is illegal to put an inverse side one-to-many or many-to-many association on
mapped superclass 'Acme\...\AbstractImageWork#comments'.
Run Code Online (Sandbox Code Playgroud)
我想这与MappedSuperclass 抽象图像工作有关,它位于Work和PhotoWork之间,但我实际上并没有将这种关系放在MappedSuperclass上,而是放在CTI表上.那么为什么Doctrine会这样呢?
有任何想法吗?
relationship class-table-inheritance mappedsuperclass doctrine-orm
我有一个删除链接来按ID删除Comment对象 /comment/:id/delete
为了保护这个链接,我在链接中添加了一个csrf标记
$CSRFTokenForm = new BaseForm();
$link = url_for(..., array('_csrf_token' => $CSRFTokenForm->getCSRFToken()));
Run Code Online (Sandbox Code Playgroud)
并且在executeDelete中我使用该checkCSRFProtection()
方法,一切正常.
唯一的一点是每个评论都是由部分显示的,每个部分创建它自己BaseForm()
以创建令牌,这是浪费时间,因为它们都是相同的.
您是否更好地了解如何提高效率,例如静态getCSRFToken()
方法或创建全局BaseForm()
?
我无法让onDelete在Doctrine2中工作(使用YAML Mapping).
我在Product
班上尝试过这种关系:
oneToOne:
category:
targetEntity: Category
onDelete: CASCADE
Run Code Online (Sandbox Code Playgroud)
但这不起作用..
编辑:
我已ON DELETE: CASCADE
在数据库中手动设置
导入YAML映射doctrine:mapping:import
,
清空数据库
从架构更新它,doctrine:schema:update
并ON DELETE
在外键中没有..所以看起来甚至Doctrine不知道怎么做它大声笑..
我正在尝试将EWZRecaptcha添加到我的注册表单中.我的注册表单构建器看起来像这样:
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('username', 'text')
->add('password')
->add('recaptcha', 'ewz_recaptcha', array('property_path' => false));
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'Acme\MyBundle\Entity\User',
);
}
Run Code Online (Sandbox Code Playgroud)
现在,我如何将Recaptcha约束添加到验证码字段?我试着把它添加到validation.yml:
namespaces:
RecaptchaBundle: EWZ\Bundle\RecaptchaBundle\Validator\Constraints\
Acme\MyBundle\Entity\User:
...
recaptcha:
- "RecaptchaBundle:True": ~
Run Code Online (Sandbox Code Playgroud)
但我得到Property recaptcha does not exists in class Acme\MyBundle\Entity\User
错误.
如果我array('property_path' => false)
从recaptcha字段的选项中删除,我会收到错误:
Neither property "recaptcha" nor method "getRecaptcha()" nor method "isRecaptcha()"
exists in class "Acme\MyBundle\Entity\User"
Run Code Online (Sandbox Code Playgroud)
知道怎么解决吗?:)
我在GitHub中有一个forked symfony存储库,我将一些代码推送到2.4分支.如何让Composer使用这个特定的分支?
composer.json:
"require" : {
...
"symfony/symfony" : "dev-2.4"
},
"repositories" : {
"type" : "vcs",
"url" : "https://github.com/tamirvs/symfony"
}
Run Code Online (Sandbox Code Playgroud)
但我明白了The requested package symfony/symfony dev-2.4 could not be found
.我也试着2.4-dev
和2.4
,但我得到了同样的错误..
我在网上找到的所有信息都让我得到了我已经尝试过的东西......任何想法?
请注意,当将版本设置为2.4.*时,存储库被拉出但没有我的提交..
考虑以下模式:
[Work]
id
tags ManyToMany(targetEntity="Tag", inversedBy="works", cascade={"persist"})
[Tag]
id
works_count
works ManyToMany(targetEntity="Work", mappedBy="tags")
Run Code Online (Sandbox Code Playgroud)
works_count
是 的计数器缓存Tag::works
。
我onFlush
在Work上有一个侦听器,用于检查是否Work::tags
已更改,并更新每个标签的works_count
.
public function onFlush(OnFlushEventArgs $args)
{
foreach ($uow->getScheduledEntityUpdates() as $work) {
$changedTags = /* update relevant tags and return all the changed ones */
$metadata = $em->getClassMetadata('Acme\Entity\Tag');
foreach ($changedTags as $tag) {
$uow->recomputeSingleEntityChangeSet($metadata, $tag);
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我阅读更新标签的变更集, 的更改会works_count
正确显示,但它们不会在数据库中更新..
如果我替换为recomputeSingleEntityChangeSet()
,computeChangeSet()
那么一切都按预期工作并且数据库已更新,但是computeChangeSet() 上有一个@internal Don't call …
doctrine-orm ×4
symfony ×2
autocomplete ×1
border ×1
branch ×1
changeset ×1
composer-php ×1
csrf ×1
css ×1
css3 ×1
file-io ×1
fixtures ×1
forms ×1
github ×1
glow ×1
hidden-field ×1
html5 ×1
image ×1
input ×1
jquery ×1
mapping ×1
php ×1
phpunit ×1
recaptcha ×1
relation ×1
relationship ×1
symfony-2.0 ×1
symfony1 ×1
testing ×1
yaml ×1