Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yajra Datatable Laravel上的CSRF不工作_Laravel_Yajra Datatable - Fatal编程技术网

Yajra Datatable Laravel上的CSRF不工作

Yajra Datatable Laravel上的CSRF不工作,laravel,yajra-datatable,Laravel,Yajra Datatable,我在laravel中有这段代码,并使用YAJRA作为我的数据表,提交时说CSRF令牌错误,这里附上我在视图/刀片中渲染之前在控制器中的代码。 这是我的密码: $return = '<form method="post" action="/procurement/add-product"> '.{{ csrf_token() }}.' <input type="hidden" name= "product_id" value=".

我在laravel中有这段代码,并使用YAJRA作为我的数据表,提交时说CSRF令牌错误,这里附上我在视图/刀片中渲染之前在控制器中的代码。 这是我的密码:

 $return = '<form method="post" action="/procurement/add-product">
            '.{{ csrf_token() }}.'
            <input type="hidden" name= "product_id" value=".$row->id.">
            <input type="text" name="product_qty"  class="form-control">
            <button type="submit" class="btn btn-primary btn-block">Add Item</button>
            </form>';

            return $return;
$return='1!'
“.{csrf_token()}}”
添加项
';
return$return;

我通过文档找到了答案, 我只是将所述表单的URI

<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        //
        'procurement/*',
    ];
}

将表单返回到另一个类似刀片的视图/products/datatables.blade.php

示例:控制器应如下所示:-

public function getproducts()
{
    $product = Product::all(); //Product is Model name

    return Datatables::of($product)
        ->addColumn('action', function($product)
        {
              return view('product.datatables', compact('product'))->render();
        })->make(true);

}
视图应如下所示:

<a href="{{ route('product.edit', ['$id' => $product->id]) }}" class="btn btn-success btn-sm">Edit</a>
<form action="/product/{{ $product->id }}" method="post" id="deleteForm">
    {{ method_field('DELETE') }}
    {{ csrf_field() }}
    <button class="btn btn-danger btn-sm" type="submit">Delete</button>
</form>

{{method_field('DELETE')}
{{csrf_field()}}
删除

它会很好用的。因为无法在控制器中读取胡须{{}。我们将东西重定向到刀片

为什么要将{{csrf_token()}}包装在“.”中?因此,我可以在视图中呈现它,此代码来自我的控制器。您可以检查如何将csrf字段添加到表单中您还可以将路由添加到