Я пытаюсь написать свой собственный конструктор настраиваемых полей, используя документацию для Play 2.8.
Следуя документации, я создал этот идентичный пример конструктора:
@(elements: helper.FieldElements)
<div class="@if(elements.hasErrors) {error}">
<label for="@elements.id">@elements.label</label>
<div class="input">
@elements.input
<span class="errors">@elements.errors.mkString(", ")</span>
<span class="help">@elements.infos.mkString(", ")</span>
</div>
</div>
Я назвал его app/views/myFieldConstructor.scala.html
. (Ранее я пытался назвать его myFieldConstructor.f
; документация play здесь не очень хорошая.)
Затем в другом месте я создал scala объект с именем app/forms/auth/AuthFieldConstructor
:
package forms.auth
import views.html
object AuthFieldConstructor {
import views.html.helper.FieldConstructor
implicit val myFields: FieldConstructor = FieldConstructor(html.myFieldConstructor.f)
}
Моя IDE жалуется на то, что f
не может быть найден, а также выводит тип html.myFieldConstructor
как myFieldConstructor.type
.
Я я могу @import forms.auth.AuthFieldConstructor._
в другом шаблоны, и код компилируется, и форма формируется, но меня беспокоит, что моя IDE неправильно выводит это.
Изучив его немного подробнее, этот код все еще компилируется, но f
все еще не распознан :
object AuthFieldConstructor {
import views.html.helper.FieldConstructor
val fieldConstructor: myFieldConstructor.type = html.myFieldConstructor
implicit val myFields: FieldConstructor = FieldConstructor(fieldConstructor.f)
}
Раньше я встречал .type
, когда забывал применить объект, но добавление apply
или ()
здесь не помогает. Есть идеи, как заставить мою IDE распознавать, что здесь происходит?
У меня отключен сервер компиляции Scala. Я использую оболочку sbt как для перезагрузки проекта, так и для сборки. У меня установлен флажок "Использовать компилятор Play 2 для этого проекта". Scala 2.13.3, сбт 1.3.13, играть 2.8.2.