Php 如果验证失败(在Kohana 3中),如何恢复表单的值
官方文件底部有一个样本 但是很明显,只要使用视图中的Php 如果验证失败(在Kohana 3中),如何恢复表单的值,php,kohana,kohana-3,Php,Kohana,Kohana 3,官方文件底部有一个样本 但是很明显,只要使用视图中的$post['username'],它就不会在请求时工作,但是$post数组在第一次请求时是空的 那么,在这种情况下,如何恢复这些值呢?有普遍的解决办法吗 PS:是的,我明白我可以做isset($post['username'])$帖子['username']:''但这很烦人我只是在看上面的旧文档 从示例代码中可以看出,首先需要使用表单字段名作为键初始化数组,并将值设置为空字符串。如果有错误,请填写每个元素的值。在视图中,您可以正常调用Form
$post['username']
,它就不会在请求时工作,但是$post
数组在第一次请求时是空的
那么,在这种情况下,如何恢复这些值呢?有普遍的解决办法吗
PS:是的,我明白我可以做
isset($post['username'])$帖子['username']:''代码>但这很烦人我只是在看上面的旧文档
从示例代码中可以看出,首先需要使用表单字段名作为键初始化数组,并将值设置为空字符串。如果有错误,请填写每个元素的值。在视图中,您可以正常调用Form::input()
,而无需任何if
语句或某种类型的语句
我想科哈纳从一开始就已经这样建造了。而且它似乎没有改变。您可能只需要做同样的事情。我刚才正在查看上的旧文档
从示例代码中可以看出,首先需要使用表单字段名作为键初始化数组,并将值设置为空字符串。如果有错误,请填写每个元素的值。在视图中,您可以正常调用Form::input()
,而无需任何if
语句或某种类型的语句
我想科哈纳从一开始就已经这样建造了。而且它似乎没有改变。您可能只需要做同样的事情。我使用函数:
echo Form::input('name', Arr::get($post, 'name'))
我使用函数:
echo Form::input('name', Arr::get($post, 'name'))
我使用模型在表单中显示数据。这样,初始表单值就是模型中的初始值
然后在控制器中用POST数据更新模型数据,如果存在验证错误,模型数据将包含POST数据。这意味着我不必在视图中放置任何条件逻辑,我只需这样做:Form::input('name',$model->name)
下面是对这种方法的更详细解释:我使用模型在表单中显示数据。这样,初始表单值就是模型中的初始值
然后在控制器中用POST数据更新模型数据,如果存在验证错误,模型数据将包含POST数据。这意味着我不必在视图中放置任何条件逻辑,我只需这样做:Form::input('name',$model->name)
下面是对这种方法的更详细解释:我不熟悉这个框架,但是为什么不将这些值存储在一个会话中呢?@Paul:因为这毫无意义-将已经在一个超全局$\u POST
中的数据移动到另一个超全局$\u会话
@zerkms大多数人可能只会遵循示例,通过将错误报告设置更改为类似于E_ALL^E_NOTICE
@Kemal Fadillah:禁止任何类型的消息(警告和通知)总是会导致代码调试困难。只编写一个不会抛出任何错误的代码要容易得多。@zerkms-对不起,我误解了你的问题。我不熟悉这个框架,但是为什么不将这些值存储在一个会话中呢?@Paul:因为这毫无意义-将已经在一个超全局$\u POST
中的数据移动到另一个超全局$\u会话
@zerkms大多数人可能只会遵循示例,通过将错误报告设置更改为类似于E_ALL^E_NOTICE
@Kemal Fadillah:禁止任何类型的消息(警告和通知)总是会导致代码调试困难。只编写一个不抛出任何错误的代码要容易得多。@zerkms-对不起,我误解了你的问题。除非你的视图中有依赖于模型值的代码,否则这很好。在您的情况下,模型将分配新的值,因此依赖代码的行为可能会有所不同。在我看来,代码完全取决于模型值,这正是我在更新模型时想要的。如果我有其他依赖代码,我将使用不同的加载模型。我的意思是,经常需要在POST和模型数据之间进行分割。假设您有一个按钮,该按钮仅在modelstatus
属性设置为“open”时可见。如果您想将状态设置为“已关闭”,但验证失败,则该按钮将隐藏,尽管您希望它可见。我不确定是否完全理解您的示例,但我不否认存在独特的用例。我认为,如果你在更新模型,你很少需要区分模型数据和后期数据。+1因为这种方法也让你只有一个操作和一个视图来创建新记录和编辑现有记录。我将我的操作命名为“编辑”,它编辑新的或现有的记录,这是一样的,您只需执行$model=ORM::factory('model',$this->request->param('id')如果URL中没有ID,Request::param()方法将返回NULL
,ORM将为您提供一个空模型以创建新记录。这是完全正确的,除非您的视图中有依赖于模型值的代码。在您的情况下,模型将分配新的值,因此依赖代码的行为可能会有所不同。在我看来,代码完全取决于模型值,这正是我在更新模型时想要的。如果我有其他依赖代码,我将使用不同的加载模型。我的意思是,经常需要在POST和模型数据之间进行分割。假设您有一个按钮,该按钮仅在modelstatus
属性设置为“open”时可见。如果要将状态设置为“已关闭”,但验证失败,尽管