在我的Symfony 3项目中,我在"用户"和"角色"之间存在ManyToMany关系.
它曾经工作,但现在我有一个错误:
Property AppBundle\Entity\Role::$user does not exist
Run Code Online (Sandbox Code Playgroud)
我不知道我做了什么,可能是因为运行了"php bin/console doctrine:mapping:import --force AppBundle xml"命令.
这是User实体类的一个片段:
/**
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
*/
class User implements AdvancedUserInterface, \Serializable {
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
*
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Role", cascade = {"persist"})
* @ORM\JoinTable(name="user_role")
*/
private $roles;
Run Code Online (Sandbox Code Playgroud)
如您所见,与Role实体有关系.
另一方面,角色实体不包含任何关系信息,它应该按照本文的规定工作:
https://knpuniversity.com/screencast/symfony2-ep3/many-to-many-relationship
它曾经工作过,现在却不知道为什么.
据我所知,根据Symfony文档,这被称为"单向ManyToMany"关系.对我来说一切都很好.
当我看到这个投射结果时,我最近有点惊讶.
echo (float)12,3;
echo "\n";
echo (float)"12,3";
Run Code Online (Sandbox Code Playgroud)
第一个将给我们123和第二个12.
有什么不同?
是的,也有类似的问题,但是它们与jquery一样添加小写字母属性,如下所示:jQuery中的attr()是否强制小写字母?
但是我有不同的情况。这是我的HTML5代码段:
<tr class='projectRow' data-projectId='34'>
Run Code Online (Sandbox Code Playgroud)
请注意,这是camelCase。现在,此代码不起作用:
//"this" points to a child element
$id = $(this).closest('.projectRow').data('projectId');//undefined
Run Code Online (Sandbox Code Playgroud)
但是,如果我将其小写:
$(this).closest('.projectRow').data('projectid');
Run Code Online (Sandbox Code Playgroud)
有用。
当我查看源代码时,它显然是“ projectId”(camelCase),但是在chrome->开发工具->元素中时,则是“ projectid”(小写)o_O
难怪jQuery无法获得此值,但是Chrome为什么要这样做呢?我之前做过数百次类似的事情,虽然在“ project-id”中使用了-,但是经过了多年的Web应用程序开发,我发现了类似o_O的东西。
更新: 是的,我知道在SO上有类似的问题,但解决方案也不起作用.
我想改变SVG的颜色,我的意思是路径的颜色,而不是"内部"的颜色,而是路径本身.
我第一次尝试使用css,它根本不起作用.然后用js,它几乎工作:
这有效,即加载图像.它默认为黑色.
<object id = 'test' data="images/icons/040__file_delete.svg" type="image/svg+xml"></object>
Run Code Online (Sandbox Code Playgroud)
我想把它变成绿色.
<script>
$(function(){
document.getElementById("test").addEventListener("load", function() {
var doc = this.getSVGDocument();
console.log(doc);//works fine
var p = doc.querySelector("path"); //works
p.setAttribute("stroke", "green");
});
})
</script>
Run Code Online (Sandbox Code Playgroud)
上面的"工作"但是在路径上添加了"边框".我也试过"颜色","填充颜色","填充" - 没有任何作用.
更新II: SVG的来源:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" id="??_1" x="0px" y="0px" viewBox="0 0 18 18" style="enable-background:new 0 0 18 18;" xml:space="preserve">
<style type="text/css">
.st0{fill:#231815;}
</style>
<g>
<g>
<g>
<g>
<g>
<path class="st0" d="M13,17.5H5c-1.4,0-2.5-1.1-2.5-2.5V3c0-1.4,1.1-2.5,2.5-2.5h3.6c0.4,0,0.8,0.2,1.1,0.4l5.4,5.4 c0.3,0.3,0.4,0.7,0.4,1.1V15C15.5,16.4,14.4,17.5,13,17.5z M5,1.5C4.2,1.5,3.5,2.2,3.5,3v12c0,0.8,0.7,1.5,1.5,1.5h8 c0.8,0,1.5-0.7,1.5-1.5V7.4c0-0.1-0.1-0.3-0.1-0.4L8.9,1.6C8.8,1.6,8.7,1.5,8.6,1.5H5z" fill="green"/>
</g>
<g>
<path class="st0" d="M15,7.5h-4C9.6,7.5,8.5,6.4,8.5,5V1c0-0.3,0.2-0.5,0.5-0.5S9.5,0.7,9.5,1v4c0,0.8,0.7,1.5,1.5,1.5h4 c0.3,0,0.5,0.2,0.5,0.5S15.3,7.5,15,7.5z"/>
</g>
</g>
<g> …Run Code Online (Sandbox Code Playgroud) 提交表单后,我通常会将用户重定向到另一个页面(表单本身除外).
因此我丢失了配置文件(调试信息,如日志).我的意思是在单击调试工具栏后,我在重定向后获得有关请求的信息.但我知道Symfony会保留有关上一页的信息.我的意思是它不会忘记它.有没有办法访问这些信息?重定向前请求的调试信息在哪里?
是否可以只使用一行(或两行)代码来创建整个表单,就像在PEAR/QuickForm中一样?
我有以下代码:
$form = $this->createFormBuilder($user)
->add('username', \Symfony\Component\Form\Extension\Core\Type\TextType::class, array('label' => 'Login: '))
->add('personal_name', \Symfony\Component\Form\Extension\Core\Type\TextType::class, array('label' => 'Imi? i nazwisko: '))
(...)
Run Code Online (Sandbox Code Playgroud)
我知道我可以添加"read_only" => true到每个"添加"函数调用,但是有一个单行程吗?
我也尝试使用这样的AbstractType:
class Register extends AbstractType
{
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'validation_groups' => array('registration'),
'readonly' => true //I also tried read_only, read-only, read only but to no avail
));
}
Run Code Online (Sandbox Code Playgroud)
上面的代码不工作,尽管当我换成'readonly' => true用'disabled' => true它...工作.但是,我希望它是readonly.
我想在这里完成的是我希望有一个视图(twig模板,一个表单)来添加新实体,编辑现有实体和显示实体的详细信息(这是readonly有用的地方).也许你有更好的主意?
我知道我可以用Javascript做到这一点,但也许有一个Symfony - 这样做的方法?
所以我在Pure css Framework中设置了一个标签,如下所示:
.pure-form-aligned .pure-control-group label {
text-align: right;
display: inline-block;
vertical-align: middle;
width: 10em;
margin: 0 1em 0 0; }
Run Code Online (Sandbox Code Playgroud)
我想"覆盖"宽度,所以下面我这样做:
.form label {//note the dot, this is a class
width: auto; }
Run Code Online (Sandbox Code Playgroud)
在html我有:
<form name="form" method="post" class="pure-form pure-form-aligned form">
<div class="pure-control-group">
<input type="checkbox" id="form_permissions_1" name="form[permissions][]" value="1" checked="checked" />
<label for="form_permissions_1">Tworzenie nowego u?ytkownika</label>
<div>
Run Code Online (Sandbox Code Playgroud)
请注意,我在声明中添加了"form"类.
为什么它不起作用?我过去常常这样做.
更新:我添加了更多的HTML代码.
我们如何将规则分配给多个验证组,这是正确的:
/**
* @ORM\Column(type="string", length=128)
* @Assert\NotBlank (groups={"registration, employee"})
*/
private $password;
Run Code Online (Sandbox Code Playgroud)
?我们应该使用逗号还是什么?