如何在Yii模型中允许文本属性为空?

时间:2015-05-25 22:33:46

标签: validation yii model

我有一个文章模型,文章可以用英语和阿拉伯语两种语言书写。

因此每种语言文本都有2个属性,我希望在创建和更新时允许两个属性为空,因为知道属性类型是文本而不是varchar。

我如何为我需要的东西编写规则?

3 个答案:

答案 0 :(得分:0)

https://www.parse.com/docs/android/guide#objects-subclasses

class MyBufferedInputStreamSpec extends UnitSpec {  

"Buffer size" should "be overridable and 4" in {
    new MyBufferedInputStream(newInputStream("abc"), 4).bufferSize should be(4)
  }

  "Buffered Stream" should "read data twice into buffer when bufferSize is smaller than number of bytes available" in {
    val str = new MyBufferedInputStream(newInputStream("abc"), 2) with ConsoleLogger with TimestampLogger

    str.readBuffered() should be('a')
    str.readBuffered() should be('b')
    str.readBuffered() should be('c')
    str.readBuffered() should be(-1)
  }

  "Buffered Stream" should "read data once into buffer when bufferSize is larger than number of bytes available" in {
    val str = new MyBufferedInputStream(newInputStream("abc"), 4) with ConsoleLogger with TimestampLogger

    str.readBuffered() should be('a')
    str.readBuffered() should be('b')
    str.readBuffered() should be('c')
    str.readBuffered() should be(-1)
  }

  private def newInputStream(str: String) = {
    new ByteArrayInputStream(str.getBytes(UTF_8))
  }
}

答案 1 :(得分:0)

从数据库表生成模型时,yii在rule()函数中添加了类似的内容:

array('field1, field2, ...', 'required')

此数组基于数据库列中的NOT NULL属性。这意味着,如果数据库字段具有NOT NULL属性已检查,则yi将其添加到上面的数组中。您需要做的就是从上面的数组中删除两个字段。

答案 2 :(得分:0)

我不确定你的意思" ...知道属性类型是文本而不是varchar ..."但是Yii已经内置了定义验证规则的机制。

有关详细信息,请参阅Yii documentation

@hamed在他的回答中指出如何强制使用字段。您可以通过指定验证规则为true的方案来添加此功能。例如。

array('field1, field2', 'required', 'on' => array('create', 'update'));

将应用' required'仅用于插入和更新的规则。另一方面。

array('field1, field2', 'required', 'except' => array('create', 'update'));

将应用' required'规则仅适用于除插入和更新之外的所有场景。