2017-07-30 56 views
0

尽管我们知道这些错误,但我们在laravel表单中也有一些常见错误。当我们知道为什么遇到错误时,我们很容易意识到错误是多么的愚蠢。我在这里添加了一些错误。Laravel形式的常见错误

+1

我投票关闭这一问题作为题外话,因为它实际上不是一个问题。 – fubar

+0

@farar我已经分享了我对形式上的一些愚蠢错误的了解,如果其他人在这里知道其他一些错误,那么在这里会有很好的答案。 –

+0

我明白,并同意它可能是有益的。我只是不认为用_tips_发布问题是分享这些信息的最佳方式。 – fubar

回答

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 =“的multipart/form-data的”使刚刚命名文件的传递与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 

}