【问题标题】:CSRF on Yajra Datatable Laravel not workingYajra Datatable Laravel 上的 CSRF 不工作
【发布时间】:2017-08-23 08:25:17
【问题描述】:

我在 laravel 中有这段代码,并使用 YAJRA 作为我的数据表,在提交时说 CSRF 令牌是错误的,这里附加的是我在控制器中的代码,然后在 View/Blade 中渲染。 这是我的代码:

 $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;

【问题讨论】:

  • 为什么将 {{csrf_token()}} 包裹在 '. ?
  • 所以我可以在视图中渲染它,这段代码来自我的控制器。
  • 您可以查看this answer 了解如何将 csrf 字段添加到表单中
  • 也可以添加路由到exceptions

标签: laravel yajra-datatable


【解决方案1】:

我通过文档找到了答案,https://laravel.com/docs/master/csrf 我只是把上述表格的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/*',
    ];
}

【讨论】:

    【解决方案2】:

    将表单返回到另一个刀片,例如 view/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>
    

    它会工作得很好。因为无法在控制器中读取小胡子 {{}}。我们将东西重定向到刀片

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-03
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-07
      相关资源
      最近更新 更多