1

コードを添付しました

アプリケーション(コントローラ)

package controllers

import play.api._
import play.api.mvc._
import play.api.data._
import play.api.data.Forms._
import models.Task
import java.io._

object Application extends Controller {

 val taskForm = Form(
    tuple(
  "id"    -> number,
  "label" -> nonEmptyText(minLength = 4),
  "add"   -> nonEmptyText
  )
  )
def index = Action {
  Redirect(routes.Application.tasks)
}
def tasks = Action {
  Ok(views.html.index(Task.all(),taskForm))
}
def showTask= Action {
  Ok(views.html.test(Task.all(), taskForm))
}

def newTask = Action { implicit request =>
  taskForm.bindFromRequest.fold(
    errors => BadRequest(views.html.index(Task.all(), errors)),
    {
    case(id,label,add) => {
      Task.create(id,label,add)
      Redirect(routes.Application.showTask)
    }
  }
  )
}

  def deleteTask(id: Int) = Action {
  Task.delete(id)
  Redirect(routes.Application.showTask)
}

}

タスク(モデル)

package models
import anorm._
import anorm.SqlParser._
import play.api.db._
import play.api.Play.current



case class Task(id: Int, label: String,add:String)
object Task {
    val task = {
  get[Int]("id") ~ 
  get[String]("label") ~
  get[String]("add") map {
    case id~label~add => Task(id, label,add)
  }
}
def all(): List[Task] = DB.withConnection { implicit c =>
  SQL("select * from task").as(task *)
}
def create(id:Int , label: String, add:String) {
  DB.withConnection { implicit c =>
    SQL("insert into task (id,label,add) values ({id},{label},{add})").on(
      'id -> id ,
      'label -> label ,
      'add  -> add
    ).executeUpdate()
  }
}

def delete(id:Int) {
  DB.withConnection { implicit c =>
    SQL("delete from task where id = {id}").on(
      'id -> id
    ).executeUpdate()
  }
}  

}

ライター関数を宣言する場所がわかりません。構文についても助けてください。フォーム要素をテキストファイルに書き込む必要があります..事前に感謝します

4

1 に答える 1

2

新しいタスクが追加されるたびにテキストを追加したいと仮定します (つまりnewTask、Play によって呼び出されます)。

でヘルパー関数を定義し、object Applicationメソッドでこのヘルパー メソッドを使用できますnewTask

object Application extends Controller {
//...
import java.io.FileWriter

  val filePath = """ path to file """
  def writingToFile(str: String) = {
     val fw = new FileWriter(filePath, true)
    try {
      fw.write(str)
    } finally {
      fw.close()
    }
  }

  def newTask = Action { implicit request =>
  taskForm.bindFromRequest.fold(
    errors => BadRequest(views.html.index(Task.all(), errors)),
    {
    case(id,label,add) => {
      /* Call the helper function to append to the file */
      writingToFile(s"id : $id, label : $label, add : $add \n")
      Task.create(id,label,add)
      Redirect(routes.Application.showTask)
    }
  }
  )
}
//..
}

同様に、他のメソッドが呼び出されると、同様の方法でファイルに追加できます。
それが役に立てば幸い :)

于 2013-09-25T12:51:45.023 に答える