官方文档底部有一个示例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从一开始就已经这样建造了。它似乎没有改变。你可能只需要做同样的事情。