通过检查Zend Framework,我发现所有setter方法(我已经检查过的方法)都会返回它所在类的实例.它不仅设置了一个值,还返回了它$this.例如:
/* Zend_Controller_Router */
public function setGlobalParam($name, $value) {
$this->_globalParams[$name] = $value;
return $this;
}
/* Zend_Controller_Request */
public function setBaseUrl($baseUrl = null) {
// ... some code here ...
$this->_baseUrl = rtrim($baseUrl, '/');
return $this;
}
/* Zend_Controller_Action */
public function setFrontController(Zend_Controller_Front $front) {
$this->_frontController = $front;
return $this;
}
Run Code Online (Sandbox Code Playgroud)
等等.每个公共制定者都会回来$this.并且它不仅适用于setter,还有其他返回的操作方法$this:
public function addConfig(Zend_Config $config, $section = null) {
// ... some code here ...
return $this;
}
Run Code Online (Sandbox Code Playgroud)
为什么需要这个?回来$this做什么?它有一些特殊含义吗?
我正在尝试计算li元素,并addClass分配给另一个div。
例如:
$('.box2').addClass(function(){
return 'list' + $(this).find('.box1 li').length;
});Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="box1">
<li>a</li>
<li>b</li>
<li>c</li>
</ul>
<div class="box2">text</div>Run Code Online (Sandbox Code Playgroud)
这应该是这样的
<div class="box2 list3">text</div>
Run Code Online (Sandbox Code Playgroud)
但是我不知道为什么当我检查DOM代码时,
<div class="box2 list0">text</div>
Run Code Online (Sandbox Code Playgroud)
我得到这个结果。
我需要修改什么代码?请帮忙。
我不明白为什么System.out.println(name)输出Sam而不受方法的concat函数的影响,而System.out.println(names)输出Sam4作为方法的append方法的结果.为什么StringBuilder受影响而不是String?通常,在对对象的引用上调用方法会影响调用者,所以我不明白为什么String结果保持不变.提前致谢
public static String speak(String name) {
name = name.concat("4");
return name;
}
public static StringBuilder test(StringBuilder names) {
names = names.append("4");
return names;
}
public static void main(String[] args) {
String name = "Sam";
speak(name);
System.out.println(name); //Sam
StringBuilder names = new StringBuilder("Sam");
test(names);
System.out.println(names); //Sam4
}
Run Code Online (Sandbox Code Playgroud) 我需要在RecyclerView下面添加一个RelativeLayout,并且能够这样做,除了TOTAL(R.id.total_amount_tv)下的按钮没有显示:
我可以轻松滚动项目,它不会影响我的RelativeLayout.我只需要按钮就可以看到.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:weightSum="1">
<android.support.v7.widget.RecyclerView
android:id="@+id/order_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="40dp"
tools:context=".ShoppingCartActivity" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp">
<TextView
android:id="@+id/total_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:text="@string/total"
android:textSize="20sp"
android:textStyle="bold|italic" />
<TextView
android:id="@+id/total_amount_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/total_tv"
android:textSize="20sp"
android:textStyle="bold|italic" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_below="@+id/total_amount_tv"
android:layout_marginTop="51dp"
android:background="@color/accent"
android:onClick="onClickSendOrder"
android:text="@string/order_btn"
android:textColor="@android:color/white"
android:textSize="20sp" />
</RelativeLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud) 在此示例中,第二个catch块无法访问,因此我的代码无法编译.但是,如果我使用LimpExceptionextend RuntimeException而不是Exception,则编译没有任何麻烦.为什么?
public class Finals {
public void run() {
try {
spit();
} catch (HurtException e) {
System.out.println("");
} catch (LimpException ex) { // does not compile, unreachable code
System.out.println("");
}
}
public void spit() throws HurtException { // method that throws the Exception
}
public static void main(String... args) {
}
}
class LimpException extends Exception { // extends Exception vs extends
// RuntimeException
}
class HurtException extends LimpException {
}
Run Code Online (Sandbox Code Playgroud) 使用IntersectionObserver API,如何找出特定元素何时位于视口之外?
一旦用户滚动经过标题,并且标题不再位于视口内,我就需要输出控制台日志。我想使用IntersectionObserver而不是滚动事件监听器来最小化负载,因为它是异步工作的。到目前为止我的代码是:
let options = {
root: null, //root
rootMargin: '0px',
threshold: 1.0,
};
function onChange(changes, observer) {
changes.forEach(change => {
if (change.intersectionRatio < 0) {
console.log('Header is outside viewport');
}
});
}
let observer = new IntersectionObserver(onChange, options);
let target = document.querySelector('#header');
observer.observe(target);
Run Code Online (Sandbox Code Playgroud)
此代码不输出任何控制台日志。PS:我的<header>元素的 ID 为header.
我对编程很新,并且不理解为什么这段代码打印200而不是206.类Cat中的move方法会覆盖Animal类中的move方法.为什么在第2行的方法调用后,Animals中的'location'实例变量不会更改为206?但是,当我删除类Cat中的方法时,实例变量DOES会更改为206.它背后的逻辑是什么?
public class Animals {
int location = 200; //line 1
public void move(int by) {
location = location+by;
}
public final static void main (String...args) {
Animals a = new Cat();
a.move(6); //line 2
System.out.println(a.location); //200, but should print 206 in my opinion
}
}
class Cat extends Animals {
int location = 400;
@Override
public void move(int by) { //if this method is removed, a.location prints 206
location = location+by;
}
}
Run Code Online (Sandbox Code Playgroud) 使用 Doctrine QueryBuilder,我想执行一个查询,在本机 SQL 中如下所示:
`SELECT image FROM image i INNER JOIN about_images a ON i.id = a.image_id`;
Run Code Online (Sandbox Code Playgroud)
DQL中的结果如下:
图像库.php:
return $this->createQueryBuilder('i')
->select('i')
->innerJoin('about_images', 'a', 'WITH', 'i.id = a.imageId')
->getQuery()
->getResult();
Run Code Online (Sandbox Code Playgroud)
其中image是实体,about_images是连接表(关系的结果@ManyToMany)。然而,我得到了未定义的错误about_images,这是有道理的,因为它不是由学说管理的。
AboutPage.php(即创建联接表的实体)
/**
* @var Image[]|ArrayCollection
*
* @ORM\ManyToMany(targetEntity="App\Entity\Image", cascade={"persist", "remove"})
* @ORM\JoinTable(name="about_images",
* joinColumns={@ORM\JoinColumn(name="about_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="image_id", referencedColumnName="id", unique=true)})
*/
private $images;
Run Code Online (Sandbox Code Playgroud)
来自图像实体的字段:
/**
* @var int
*
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/** …Run Code Online (Sandbox Code Playgroud) 我正在努力了解该java.nio.file.Path.relativize()方法。我也知道有人问过类似的问题,但是答案并没有帮助我理解这个概念。
考虑以下代码片段:
Path path = Paths.get("/Users/somename/documents/Test/cat.html");
Path path2 = Paths.get("/documents/Test/cat.html");
System.out.println((path.relativize(path2))); //output: ../../../../../documents/Test/cat.html
Run Code Online (Sandbox Code Playgroud)
有人可以使用逐步方法向我解释该relativize()方法在此示例中的工作方式吗?为什么需要上5个目录?
我正在将vue-hotel-datepicker库实现到我的项目中,并希望在进行ajax调用后动态地将日期添加到disabledDates属性,但我的实现似乎不起作用.当我使用Vue devtools进行调试时,我可以清楚地看到disabledDates数组包含正确的日期,它只是不会将它们渲染为"禁用".它在我硬编码这些日期时有效.
模板:
<datepicker
:disabledDates="disabledDates"
:firstDayOfWeek="1"
>
</datepicker>
Run Code Online (Sandbox Code Playgroud)
JS:
data() {
return {
disabledDates: this.fetchBookedDates() //contains correct data, see screenshot below
}
},
methods: {
fetchBookedDates() {
window.fetch(Routing.generate('bookings'))
.then(response => response.json())
.then(data => this.disabledDates = data['period'])
.catch((error) => console.log(error));
}
}
Run Code Online (Sandbox Code Playgroud)
调试步骤:Vue devtools disabledDates在页面加载时立即显示来自我的提取调用,但仍然在我的datepicker上启用了所有日期:
硬编码(有效):
当我硬编码了几个日期,它确实显示我的日期为"已禁用":
data() {
return {
disabledDates: ['2019-02-03', '2019-02-04']
}
}
Run Code Online (Sandbox Code Playgroud)
我在Vue devtools中获得与动态添加它们时相同的结果(也在页面加载时):
我的实施有什么问题,我应该如何解决这个问题?
编辑
该HotelDatePicker组件是从我的库生成的,其中包含disabledDates我需要覆盖的属性.此屏幕截图是动态添加disabledDatesvia ajax调用的结果,如上所述.在我的ajax调用之后,两个组件(Datepicker和HotelDatePicker)具有相同的内容disabledDates,包含相同的数据.但是我的日期并没有呈现为"禁用"(仅当我对其进行硬编码时)

在使用EasyAdminBundle创建的管理控制台中,我的表单验证仅适用于没有的字段CKEditorType。一些字段需要编辑,因此我使用FOSCKEditorBundle实现了所见即所得。
有关领域的摘录:
- { property: 'content', type: 'FOS\CKEditorBundle\Form\Type\CKEditorType'}
Run Code Online (Sandbox Code Playgroud)
当我提交带有空白“内容”字段的表单时,InvalidArgumentException出现错误消息:Expected argument of type "string", "NULL" given.而不是诸如“ 请填写此字段”之类的验证错误。
没有CKEditor的相关领域的代码片段:
- { property: 'content' }
Run Code Online (Sandbox Code Playgroud)
=>验证非常有效。
我的实体字段:
/**
* @ORM\Column(type="text")
* @Assert\NotBlank
* @Assert\NotNull
*/
private $content;
Run Code Online (Sandbox Code Playgroud)
Symfony探查器显示此字段确实具有required属性。
如何使用CKEditor字段类型启用验证?
我使用 Bootstrap 4 设计了一个布局,其中容器 b 位于容器 A 旁边。但我希望容器 B 覆盖容器 A 的某些部分,如图所示。我怎样才能实现这种布局?任何帮助或参考将不胜感激。
<!-- container A -->
<div class="container-fluid">
<div class="row text-center">
<div class="col-12">
<h4>HOW IT WORKS</h4>
</div>
</div>
<div class="row text-center">
<div class="offset-md-2 col-md-2 px-0">
<div class="card">
<div class="card-header">
card 1 title
</div>
<div class="card-body">
card 1 body
</div>
</div>
</div>
<div class="offset-md-1 col-md-2">
<div class="card">
<div class="card-header">
card 2 header
</div>
<div class="card-body">
card 2 body
</div>
</div>
</div>
<div class="offset-md-1 col-md-2">
<div class="card">
<div class="card-header">
card 3 header …Run Code Online (Sandbox Code Playgroud)java ×4
javascript ×4
css ×2
html ×2
symfony ×2
android ×1
bootstrap-4 ×1
ckeditor ×1
datepicker ×1
doctrine-orm ×1
easyadmin ×1
inheritance ×1
jquery ×1
nio ×1
php ×1
polymorphism ×1
return ×1
string ×1
symfony4 ×1
vue.js ×1
vuejs2 ×1