即使我们知道错误,我们也会以laravel
形式出现一些常见错误。当我们知道为什么会遇到错误时,我们很容易意识到错误是多么愚蠢。我在这里添加了一些错误。
答案 0 :(得分:1)
以下列出了我们以laravel形式所做的一些常见错误。
<强> 1。 CSRF令牌字段
我们需要在每个laravel表单中添加隐藏的csrf标记字段,以保护应用程序免受跨站点请求伪造(CSRF)攻击。我们可以使用csrf_field
生成隐藏的csrf标记字段,如下所示。
<form method="POST" action="/create">
{{ csrf_field() }}
...
</form>
当我们在VerifyCsrfToken.php行中看到错误 TokenMismatchException ... 时,我们只记得我们犯过的错误。
<强> 2。文件上传
当您发出 POST 请求时,您必须以某种方式对构成请求正文的数据进行编码。
当您编写客户端代码时,当您的表单包含任何 元素时,您需要知道的是使用 multipart / form-data 。
在使用表单上传文件期间,有时我们忘记添加 enctype =&#34; multipart / form-data&#34; ,以便只使用form-request
传递文件名称并且没有上传文件。那么,我们需要做的是
<form method="POST" action="/create" enctype="multipart/form-data" >
{{ csrf_field() }}
<input type="file" name="upload">
....
</form>
enctype="multipart/form-data"
表示不会编码任何字符。这就是为什么在将文件上传到服务器时使用此类型的原因。
因此,当表单需要上传二进制数据(如文件内容)时,会使用 multipart / form-data 。
第3。数组输入字段
当我们处理表单中的输入字段数组时,有时我们忘记了数组输入定义并使用数组输入,如
<input name="data">
....
<input name="data">
正如我们所知道的那样,即使有多个输入字段,它也只发送一个值。因此,我们需要将输入字段定义为
<input name="data[]">
....
<input name="data[]">
而且,数组的另一个错误就是在服务器端进行验证。
$this->validate($request, [
'data' => 'required|alpha_num'
], $messages = [
]
此验证将始终失败,因为data
是数组,因此它不会是字母数字。所以,我们可以像这样验证:
$this->validate($request, [
'data' => 'required',
'data.*' => 'required|alpha_num'
], $messages = [
]
在此之后,我们可以轻松访问data[]
,如:
foreach($request->data as $d){
// save data with loop
}