如果验证失败,如何恢复表单的值(在Kohana 3中)


How do you restore the values of the form in case if validation failed (in Kohana 3)

官方文档底部有一个示例http://kohanaframework.org/3.2/guide/kohana/security/validation

但很明显,只要使用了View中的$post['username'],但第一次请求时$post数组为空,它就不会在请求中工作。

那么,在这种情况下,如何恢复这些值呢?有什么通用的解决方案吗?

PS:是的,我确实知道我可以做isset($post['username']) ? $post['username'] : '';,但这只是令人讨厌的

我使用模型来显示表单中的数据。这样,表单的初始值就是模型中的初始值。

然后,我用控制器中的POST数据更新模型数据,如果存在验证错误,模型数据将包含POST数据。这意味着我不必在视图中放入任何条件逻辑,我只需要:Form::input('name', $model->name)

以下是对这种方法的更详细解释:Kohana ORM和Validation,存在问题

我使用Arr::get函数:

echo Form::input('name', Arr::get($post, 'name'))

我只是在看关于构建和验证表单的旧文档。

您可以从示例代码中看到,首先需要初始化一个以表单字段名称为键的数组,并将值设置为空字符串。如果出现错误,请填写每个元素的值。在视图中,您可以简单地正常调用Form::input(),而不需要任何if语句或某种排序

我想Kohana从一开始就已经这样建造了。它似乎没有改变。你可能只需要做同样的事情。